:root{--app-bg: #f8fafc;--surface: #ffffff;--sidebar-bg: #f1f5f9;--hover-surface: #f8fafc;--ink: #0f172a;--ink-muted: #475569;--ink-faint: #64748b;--line: #e2e8f0;--line-strong: #94a3b8;--primary: #047857;--primary-hover: #065f46;--primary-text: #ffffff;--selected-bg: #ecfdf5;--selected-ink: #065f46;--focus-ring: #2563eb;--info-ink: #1d4ed8;--info-bg: #eff6ff;--warn-ink: #92400e;--warn-bg: #fffbeb;--error-ink: #b91c1c;--error-bg: #fef2f2;--ok-ink: #065f46;--ok-bg: #ecfdf5;--header-bg: #f1f5f9;--radius-sm: 6px;--radius-md: 8px;--shadow-float: 0 8px 24px rgba(15, 23, 42, .12);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--control-h: 36px;--sidebar-w: 232px;--sidebar-collapsed: 56px;--toolbar-h: 64px;--page-pad: 20px;--drawer-w: 448px;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:var(--font);color:var(--ink);background:var(--app-bg);line-height:1.45;font-size:14px}#root,app-root{display:block;min-height:100%}code{font-family:var(--mono);font-size:.85em;background:var(--hover-surface);border:1px solid var(--line);padding:.05rem .35rem;border-radius:4px;word-break:break-all}.muted{color:var(--ink-faint)}.small{font-size:12px}.skip-link{position:absolute;left:-999px;top:8px;z-index:80;background:var(--surface);color:var(--ink);padding:8px 12px;border-radius:var(--radius-sm)}.skip-link:focus{left:8px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}button:focus:not(:focus-visible),a:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible),textarea:focus:not(:focus-visible){outline:none}.app-shell{display:flex;min-height:100vh;background:var(--app-bg);overflow:hidden}.app-shell.collapsed{--sidebar-w: 56px}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:100vh;max-height:100vh;overflow:visible;z-index:20}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:16px 12px 12px;min-height:var(--toolbar-h)}.brand-mark{width:28px;height:28px;border-radius:7px;background:var(--primary);color:var(--primary-text);display:grid;place-items:center;flex-shrink:0}.brand-copy{min-width:0}.brand-copy strong{display:block;font-size:14px;font-weight:650;letter-spacing:.01em}.brand-copy span{display:block;font-size:11px;color:var(--ink-faint)}.collapsed .brand-copy,.collapsed .sidebar-selects,.collapsed .nav-group-label,.collapsed .nav-link span,.collapsed .account-meta,.collapsed .sidebar-foot-text{display:none}.sidebar-selects{display:flex;flex-direction:column;gap:10px;padding:0 12px 12px;position:relative;z-index:21}.sidebar-field-label{display:block;margin:0 0 4px 2px;font-size:11px;font-weight:600;color:var(--ink-muted)}.sidebar-select{width:100%;height:34px;min-height:34px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);text-align:left;padding:0 10px;font:inherit;display:flex;flex-direction:row;align-items:center;gap:8px}.sidebar-select .label{font-size:11px;color:var(--ink-faint)}.sidebar-select .value{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.nav-scroll{flex:1;overflow:auto;padding:4px 8px 12px}.nav-group{margin:0 0 12px}.nav-group-label{margin:0 8px 4px;font-size:11px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.nav-link{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 10px;border-radius:var(--radius-sm);color:var(--ink-muted);text-decoration:none;position:relative;font-size:14px}.nav-link:hover{background:var(--hover-surface);color:var(--ink)}.nav-link.active{background:var(--selected-bg);color:var(--selected-ink);font-weight:600}.nav-link.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 2px 2px 0;background:var(--primary)}.sidebar-foot{border-top:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:8px}.sidebar-meta{display:flex;flex-wrap:wrap;gap:4px}.collapsed .sidebar-meta{display:none}.app-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--app-bg)}.app-alerts{padding:8px var(--page-pad) 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.app-alerts .banner{flex:1 1 100%}@media(min-width:961px){.app-alerts:not(:has(.banner)){display:none}}.app-content{flex:1;min-width:0;overflow:auto}.app-content:has(app-bulk-builder){overflow:hidden;display:flex;flex-direction:column}.app-content:has(app-bulk-builder) app-bulk-builder{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.menu-toggle,.sidebar-backdrop{display:none}@media(max-width:960px){.menu-toggle{display:inline-flex}.sidebar{position:fixed;inset:0 auto 0 0;width:min(280px,86vw);transform:translate(-102%);transition:transform .16s ease;box-shadow:none}.sidebar.open{transform:translate(0);box-shadow:var(--shadow-float)}.sidebar-backdrop{display:block;position:fixed;inset:0;background:#0f172a59;z-index:19}.app-shell.collapsed{--sidebar-w: 0px}.sidebar{flex-basis:auto}}.page{padding:0 var(--page-pad) var(--page-pad);display:flex;flex-direction:column;gap:16px;min-width:0}.page-toolbar{min-height:var(--toolbar-h);display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0}.page-toolbar-left{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 180px}.page-title-block{min-width:0}.page-toolbar-center{flex:1 1 180px;max-width:260px;display:flex;justify-content:center}.page-toolbar-right{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-left:auto}.page-title{margin:0;font-size:20px;font-weight:600;line-height:1.3}.page-kicker{margin:2px 0 0;font-size:12px;color:var(--ink-faint)}.section-title{margin:0 0 8px;font-size:15px;font-weight:600}.page-head{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-start}.page-head h2,.intro h2{margin:0;font-size:20px;font-weight:600}.page-head p,.intro p{margin:4px 0 0;color:var(--ink-muted);max-width:72ch;font-size:14px}.columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}.column{display:flex;flex-direction:column;gap:16px;min-width:0}@media(max-width:1100px){.columns{grid-template-columns:minmax(0,1fr)}}.panel{border:1px solid var(--line);border-radius:var(--radius-md);padding:16px;background:var(--surface)}.panel>h2,.panel>h3{margin:0 0 8px;font-size:15px;font-weight:600}.panel-info{background:var(--info-bg);border-color:#bfdbfe;color:var(--info-ink)}.panel-error{background:var(--error-bg);border-color:#fecaca;color:var(--error-ink)}.panel-warning{background:var(--warn-bg);border-color:#fde68a;color:var(--warn-ink)}.panel-ok{background:var(--ok-bg);border-color:#a7f3d0;color:var(--ok-ink)}.banner{margin:0;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:13px}.banner-error{background:var(--error-bg);border-color:#fecaca;color:var(--error-ink)}.banner-ok{background:var(--ok-bg);border-color:#a7f3d0;color:var(--ok-ink)}.banner-warn{background:var(--warn-bg);border-color:#fde68a;color:var(--warn-ink)}.banner-info{background:var(--info-bg);border-color:#bfdbfe;color:var(--info-ink)}.chip,.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;line-height:1.2;padding:3px 8px;border-radius:999px;background:var(--header-bg);color:var(--ink-muted);white-space:nowrap}.chip-account{font-family:var(--mono);background:var(--selected-bg);color:var(--selected-ink)}.chip-off{background:var(--header-bg);color:var(--ink-muted)}.chip-warn,.badge-uncertain,.badge-simulated{background:var(--warn-bg);color:var(--warn-ink)}.badge-succeeded,.badge-ok,.badge-paused,.badge-completed,.badge-queued{background:var(--ok-bg);color:var(--ok-ink)}.badge-failed,.badge-active,.badge-error{background:var(--error-bg);color:var(--error-ink)}.badge-running,.badge-pending,.badge-processing,.badge-info{background:var(--info-bg);color:var(--info-ink)}.status-badge{display:inline-flex;align-items:center;gap:6px}button{background:var(--primary);color:var(--primary-text);border:1px solid transparent;border-radius:var(--radius-sm);min-height:var(--control-h);padding:0 12px;font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}button:hover:not(:disabled){background:var(--primary-hover)}button:disabled{background:#cbd5e1;color:#f8fafc;cursor:not-allowed}button.secondary{background:var(--surface);color:var(--ink);border-color:var(--line);font-weight:550}button.secondary:hover:not(:disabled){background:var(--hover-surface)}button.secondary:disabled{background:var(--header-bg);color:#94a3b8;border-color:var(--line)}button.small{min-height:32px;padding:0 10px;font-size:13px}button.icon,button.icon-btn{width:36px;min-width:36px;padding:0;background:var(--surface);color:var(--ink-muted);border:1px solid var(--line)}button.icon:hover:not(:disabled),button.icon-btn:hover:not(:disabled){background:var(--hover-surface);color:var(--ink)}button.danger{background:var(--error-ink);color:#fff}button.danger:hover:not(:disabled){background:#991b1b}button.danger:disabled{background:#cbd5e1}button.link{background:none;border:none;color:var(--info-ink);padding:0;min-height:0;text-decoration:underline;font-weight:500}button.link:hover:not(:disabled){background:none}button.ghost{background:transparent;color:var(--ink);border:none;font-weight:550;padding:0 10px}button.ghost:hover:not(:disabled){background:var(--hover-surface)}button.ghost:disabled{background:transparent;color:#94a3b8}button.icon.quiet{border:none;background:transparent;width:32px;min-width:32px;min-height:32px;color:var(--ink-faint)}button.icon.quiet:hover:not(:disabled){background:var(--hover-surface);color:var(--ink)}button.icon.quiet[aria-pressed=true]{color:var(--ink);background:var(--header-bg)}.view-toggles{display:inline-flex;align-items:center;gap:2px}.search-wrap{position:relative;display:block;width:100%;max-width:260px;margin:0 auto}.search-wrap app-icon{position:absolute;left:10px;top:50%;z-index:1;width:16px;height:16px;transform:translateY(-50%);color:var(--ink-faint);pointer-events:none}.search-wrap input[type=search]{height:32px;min-height:32px;padding:0 12px 0 38px;border:0;border-radius:999px;background:var(--header-bg);font-size:13px;color:var(--ink);appearance:none;-webkit-appearance:none}.search-wrap input[type=search]::-webkit-search-decoration,.search-wrap input[type=search]::-webkit-search-cancel-button,.search-wrap input[type=search]::-webkit-search-results-button,.search-wrap input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.search-wrap input[type=search]::placeholder{color:var(--ink-faint)}.search-wrap input[type=search]:focus{outline:2px solid var(--focus-ring);outline-offset:1px;background:var(--surface);border-color:transparent}a.small.secondary{min-height:32px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;background:var(--surface);font-size:13px;font-weight:550}a.small.secondary:hover{background:var(--hover-surface)}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field>span,.field>legend{font-size:12px;font-weight:600;color:var(--ink-muted)}.field .hint{font-size:12px;color:var(--ink-faint);font-weight:400}input[type=text],input[type=password],input[type=url],input[type=number],input[type=search],input[type=datetime-local],select,textarea{min-height:var(--control-h);padding:6px 10px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font:inherit;font-size:14px;background:var(--surface);color:inherit;width:100%}textarea{resize:vertical;min-height:72px;line-height:1.45}input.invalid,select.invalid,textarea.invalid{border-color:var(--error-ink)}.field-error{font-size:12px;color:var(--error-ink)}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:12px}fieldset{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;margin:0;min-width:0}legend{font-size:12px;font-weight:600;padding:0 4px}.checks{display:flex;flex-wrap:wrap;gap:8px 16px}.checks label{display:flex;align-items:center;gap:6px;font-size:14px}.checks input,.filter-row input[type=checkbox],.select-all input,.check input{width:auto}.table-wrap,.sheet-scroll{overflow:auto;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);min-width:0}table.data{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}table.data th{text-align:left;font-size:12px;font-weight:650;color:var(--ink-muted);background:var(--header-bg);border-bottom:1px solid var(--line);padding:8px 12px;position:sticky;top:0;z-index:3;white-space:nowrap}table.data td{padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:top;background:var(--surface)}table.data tbody tr:hover td{background:var(--hover-surface)}table.data tr.selectable{cursor:pointer}table.data tr.selected td,table.data tr.checked td{background:var(--selected-bg)}.empty,.placeholder{color:var(--ink-faint);padding:16px;border:1px dashed var(--line);border-radius:var(--radius-md);margin:0;background:var(--surface)}.pairs{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}.pairs dt{color:var(--ink-muted);font-size:13px}.pairs dd{margin:0;font-weight:550;font-size:13px;min-width:0;word-break:break-word}.floating-panel{position:absolute;z-index:40;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-float);min-width:220px}.drawer-root{position:fixed;inset:0;z-index:50;display:flex;justify-content:flex-end}.drawer-backdrop{position:absolute;inset:0;background:#0f172a47}.drawer{position:relative;width:min(var(--drawer-w),100%);height:100%;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow-float);display:flex;flex-direction:column;min-width:0}.drawer.wide{width:min(480px,100%)}.drawer-head,.drawer-foot,.panel-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line)}.drawer-foot,.panel-foot{border-bottom:0;border-top:1px solid var(--line);margin-top:auto}.drawer-body,.panel-body{padding:16px;overflow:auto;flex:1;min-height:0}.toast-host{position:fixed;right:16px;bottom:16px;z-index:60;display:flex;flex-direction:column;gap:8px;width:min(320px,calc(100vw - 24px))}.toast{border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-float);padding:10px 12px;background:var(--surface);font-size:13px}.toast.ok{background:var(--ok-bg);color:var(--ok-ink);border-color:#a7f3d0}.toast.info{background:var(--info-bg);color:var(--info-ink);border-color:#bfdbfe}.toast.warn{background:var(--warn-bg);color:var(--warn-ink);border-color:#fde68a}.toast.error{background:var(--error-bg);color:var(--error-ink);border-color:#fecaca}.editor-page{flex:1;height:100%;min-height:0;max-height:100%;display:flex;flex-direction:column;padding:0 var(--page-pad);gap:0;background:var(--surface);overflow:hidden}.editor-page>.panel{flex:1;min-height:0;overflow:auto}.editor-page .page-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:16px;flex-wrap:nowrap;flex-shrink:0;border-bottom:1px solid var(--line);margin:0 calc(-1 * var(--page-pad));padding:10px var(--page-pad)}.editor-page .page-toolbar-left{flex:0 0 auto}.editor-page .page-toolbar-center{flex:none;width:260px;max-width:260px;justify-self:center}.editor-page .page-toolbar-right{margin-left:0;justify-content:flex-end;flex-wrap:nowrap}@media(max-width:900px){.editor-page .page-toolbar{grid-template-columns:minmax(0,1fr)}.editor-page .page-toolbar-right{justify-content:flex-start;flex-wrap:wrap}}.dest-strip{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:8px;padding:8px 0 12px;border-bottom:1px solid var(--line)}@media(max-width:1280px){.dest-strip{grid-template-columns:repeat(3,minmax(140px,1fr))}}@media(max-width:720px){.dest-strip{grid-template-columns:minmax(0,1fr)}}.select-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 12px;margin:8px 0;background:var(--selected-bg);border:1px solid #a7f3d0;border-radius:var(--radius-sm);color:var(--selected-ink);font-size:13px;font-weight:600}.select-bar .actions{margin-left:auto}.sheet-scroll{flex:1;min-height:0}.sheet-table{min-width:3600px}.sheet-table th,.sheet-table td{background-clip:padding-box}.sheet-table tbody td{height:140px;max-height:150px}.sheet-table input,.sheet-table select,.sheet-table textarea{min-height:32px;font-size:14px}.sheet-table textarea{height:88px;min-height:88px;resize:none}.thumb-cell{width:88px;height:88px;background:var(--header-bg);border:1px solid var(--line);border-radius:var(--radius-sm);display:grid;place-items:center;overflow:hidden}.thumb-cell img,.thumb-cell video{max-width:100%;max-height:100%;object-fit:contain}.sticky-select{position:sticky;left:0;z-index:4;width:44px;min-width:44px}.sticky-creative{position:sticky;left:44px;z-index:4;width:100px;min-width:100px}.sticky-name{position:sticky;left:144px;z-index:4;width:200px;min-width:200px}thead .sticky-select,thead .sticky-creative,thead .sticky-name{z-index:6;background:var(--header-bg)}tbody .sticky-select,tbody .sticky-creative,tbody .sticky-name{background:var(--surface)}tr:hover .sticky-select,tr:hover .sticky-creative,tr:hover .sticky-name{background:var(--hover-surface)}tr.checked .sticky-select,tr.checked .sticky-creative,tr.checked .sticky-name,tr.selected .sticky-select,tr.selected .sticky-creative,tr.selected .sticky-name{background:var(--selected-bg)}@media(max-width:1600px){.sticky-name{position:static;left:auto}}@media(max-width:1280px){.sticky-creative{position:static;left:auto}}.row-marker{display:inline-flex;margin-top:4px}.editor-footer{display:flex;flex-wrap:wrap;gap:12px;align-items:center;flex-shrink:0;min-height:56px;padding:8px 0 12px;background:var(--app-bg);border-top:1px solid var(--line)}.editor-footer .spacer{flex:1}.col-resize{position:absolute;right:0;top:0;width:6px;height:100%;cursor:col-resize}table.data.sheet-table thead th{position:sticky;top:0;z-index:5;background:var(--header-bg)}table.data.sheet-table thead th.sticky-select,table.data.sheet-table thead th.sticky-creative,table.data.sheet-table thead th.sticky-name{z-index:7;background:var(--header-bg)}.mobile-rows{display:none}@media(max-width:768px){.sheet-scroll{display:none}.mobile-rows{display:flex;flex-direction:column;gap:8px;overflow:auto;flex:1;padding:8px 0 16px}.mobile-card{border:1px solid var(--line);border-radius:var(--radius-md);padding:12px;background:var(--surface)}}.filter-row{display:flex;flex-wrap:wrap;gap:8px;align-items:end}.library-row{height:82px}.library-thumb{width:64px;height:64px;background:var(--header-bg);border-radius:var(--radius-sm);display:grid;place-items:center;overflow:hidden}.library-thumb img{max-width:100%;max-height:100%;object-fit:contain}.dropzone{border:1px dashed var(--line-strong);border-radius:var(--radius-md);padding:20px;text-align:center;background:var(--surface)}.dropzone.over{border-color:var(--primary);background:var(--selected-bg)}.signin{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:24px}.signin form{width:min(26rem,100%);display:flex;flex-direction:column;gap:12px}.list-head{display:flex;gap:12px;justify-content:space-between;align-items:baseline;flex-wrap:wrap;margin-bottom:8px}.list-head h3{margin:0;font-size:15px}.compact-picker{display:flex;flex-direction:column;gap:4px;min-width:0;position:relative}.compact-trigger{width:100%;justify-content:space-between;font-weight:500}.compact-menu{top:calc(100% + 4px);left:0;right:0;max-height:min(320px,70vh);overflow:auto;padding:8px;z-index:45}.compact-menu ul{list-style:none;margin:8px 0 0;padding:0}.compact-menu li button{width:100%;justify-content:flex-start;background:transparent;color:var(--ink);font-weight:500;border:0}.compact-menu li button:hover{background:var(--hover-surface)}.template-panel{overflow:hidden}.overflow-menu{position:relative}.job-summary{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}.preview-media{width:100%;max-height:240px;object-fit:contain;background:var(--header-bg);border-radius:var(--radius-sm);border:1px solid var(--line)}.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.media-card{border:1px solid var(--line);border-radius:var(--radius-md);padding:8px;background:var(--surface)}.media-card .library-thumb{width:100%;height:120px}.form{display:flex;flex-direction:column;gap:12px}
