:root{--bg:#f4f5fa;--panel:#fff;--card:#fff;--border:#eef0f6;--field-border:#c0c6d4;--ink:#14161b;--muted:#8a90a0;--slate:#14161b;--primary:#4f46e5;--primary-weak:#eef0ff;--c1:#2563eb;--c2:#10b981;--c3:#f59e0b;--c4:#8b5cf6;--c5:#f43f5e;--c6:#06b6d4;--self:#2563eb;--smart:#10b981;--coup:#f59e0b;--profit:#8b5cf6;--m0:#4f46e5;--m1:#f59e0b;--up:#059669;--down:#e11d48;--pos:#059669;--pos-bg:#d1fae5;--neg:#e11d48;--neg-bg:#ffe4e6;--warn:#b45309;--warn-bg:#fef3c7;--warn-surface:#fffbeb;--warn-border:#fcd34d;--surface-2:#fafafa;--font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;--kpi1:#eef0ff;--kpi2:#fff1e8;--kpi3:#e7fbf1;--kpi4:#f3eeff;--radius:14px;--radius-lg:16px;--sidebar-w:290px;--sidebar-bg:#fff;--shadow-card:0 1px 3px #14161b0f;--ev-demand:#8b5cf6;--ev-product:#10b981;--ev-risk:#f59e0b;--ev-baseline:#475569}*{box-sizing:border-box}html,body{background:var(--bg);max-width:100%;color:var(--ink);margin:0;font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Malgun Gothic,sans-serif;overflow-x:hidden}.wrap{width:100%;max-width:2200px;margin:0 auto;padding:16px 24px}.bar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.bar .lbl{color:var(--muted);margin-right:2px;font-size:12px;font-weight:600}.pills{flex-wrap:wrap;gap:6px;display:flex}.pills button{border:1px solid var(--border);cursor:pointer;color:var(--muted);background:#fff;border-radius:9px;padding:7px 14px;font-size:13px;font-weight:600}.pills button:hover{border-color:#c7cbe0}.pills button.on{background:var(--primary);color:#fff;border-color:var(--primary)}.bar input[type=date]{border:1px solid var(--border);border-radius:9px;padding:6px 8px;font-size:13px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin-bottom:16px;padding:16px;overflow:hidden}.card h2{color:var(--ink);margin:0 0 8px;font-size:15px}.card .sub{color:var(--muted);font-size:12px;font-weight:400}.chartbox{width:100%;height:300px;position:relative}.tablewrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{border-bottom:1px solid var(--border);text-align:right;white-space:nowrap;padding:8px 10px}th{text-align:center}th:first-child,td:first-child{background:var(--card);position:sticky;left:0}td:first-child,td.l,th.l{text-align:left}thead th{color:#41505f;background:#f4f5fa;font-weight:700}tbody tr.tot{background:#fafbff;border-top:2px solid #d7dbf0;font-weight:800}.up{color:var(--up);font-weight:700}.down{color:var(--down);font-weight:700}.mut{color:var(--muted)}.grid2{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (max-width:900px){.grid2{grid-template-columns:1fr}}.vf-grid{grid-template-columns:290px 1fr;align-items:start;gap:16px;display:grid}@media (max-width:900px){.vf-grid{grid-template-columns:1fr}}.md-body h1,.md-body h2{margin:18px 0 6px;font-size:16px}.md-body h3{margin:14px 0 4px;font-size:14.5px}.md-body p{margin:6px 0}.md-body ul,.md-body ol{margin:6px 0;padding-left:22px}.md-body li{margin:2px 0}.md-body code{font-family:var(--font-mono);background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:1px 5px;font-size:.88em}.md-body pre{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:10px 12px;overflow-x:auto}.md-body pre code{background:0 0;border:0;padding:0}.md-body blockquote{border-left:3px solid var(--border);color:var(--muted);margin:8px 0;padding:2px 12px}.md-body table{width:auto}.md-body th:first-child,.md-body td:first-child{background:0 0;position:static}.zonegrid{grid-template-columns:302px 1fr;gap:16px;display:grid}@media (max-width:640px){.zonegrid{grid-template-columns:1fr}}.zonetable th,.zonetable td{padding:8px 6px}.timeline-months{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}@media (max-width:640px){.timeline-months{grid-template-columns:1fr}}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite spin}.spinner.sm{border-width:2px;width:14px;height:14px}@keyframes spin{to{transform:rotate(360deg)}}@media (min-width:769px){.app-sidebar{scrollbar-width:none;align-self:flex-start;height:100dvh;position:sticky;top:0;overflow-y:auto}.app-sidebar::-webkit-scrollbar{display:none}}.hamburger{border:1px solid var(--border);background:var(--card);cursor:pointer;width:34px;height:34px;color:var(--ink);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:17px;line-height:1;display:none}.app-backdrop{display:none}@media (max-width:768px){.app-sidebar{z-index:60;height:100dvh;transition:transform .22s;position:fixed;top:0;left:0;overflow-y:auto;transform:translate(-100%);box-shadow:2px 0 18px #0f121a29}.app-sidebar.open{transform:translate(0)}.app-backdrop.open{z-index:55;background:#0f121a70;display:block;position:fixed;inset:0}.hamburger{display:inline-flex}.wrap{padding:12px 14px}}.chip{white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;line-height:1.4;display:inline-block}.evchip{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2.5px 9px;font-size:11.5px;font-weight:700;display:inline-flex}.evchip .m{font-size:10px}.evchip.demand{color:#6d28d9;background:#f3eeff}.evchip.product{color:#047857;background:#d1fae5}.evchip.risk{color:#b45309;background:#fef3c7}.evchip.baseline{color:#334155;background:#e9edf3}.orderlink{color:var(--primary);text-underline-offset:3px;cursor:pointer;font-weight:700;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.orderlink:hover{text-decoration-style:solid}.invlink,.invlink:visited{color:var(--self);text-underline-offset:2px;font-weight:600;text-decoration:underline}.invlink:hover{opacity:.8}.kpi-click{cursor:pointer;border:1px solid var(--border);transition:border-color .12s,box-shadow .12s}.kpi-click:hover{border-color:#c7cbe0}.kpi-click.on{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary);background:var(--primary-weak)}.rbox{background:var(--bg);border-radius:12px;padding:12px 14px}.rbox h3{color:var(--muted);letter-spacing:.02em;margin:0 0 8px;font-size:12px;font-weight:700}.stagebar{margin:4px 0 2px;display:flex}.stagestep{text-align:center;flex:1;position:relative}.stagestep.clickable{cursor:pointer}.stagestep .dot{color:#fff;background:var(--pos);z-index:1;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;margin:0 auto 4px;font-size:11px;display:flex;position:relative}.stagestep.todo .dot{background:#d6d9e6}.stagestep.now .dot{background:var(--primary);box-shadow:0 0 0 4px var(--primary-weak)}.stagestep.editing .dot{outline:2px solid var(--primary);outline-offset:2px}.stagestep:not(:first-child):before{content:"";background:#e3e6f0;width:100%;height:2px;position:absolute;top:11px;left:-50%}.stagestep .nm{white-space:nowrap;font-size:11px;font-weight:700}.stagestep .dt{color:var(--muted);font-size:10.5px}.plain-table th:first-child,.plain-table td:first-child{background:0 0;position:static}.copybtn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;align-items:center;padding:2px;display:inline-flex}.copybtn:hover{color:var(--primary);background:var(--bg)}.toast{background:var(--ink);color:#fff;z-index:90;border-radius:10px;padding:9px 18px;font-size:13px;font-weight:600;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #14161b40}.modal-backdrop{z-index:80;background:#0f121a70;justify-content:center;padding:24px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);outline:none;max-width:100%;margin:auto;padding:16px;box-shadow:0 8px 32px #14161b2e}.subbar{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;display:flex}.subbar .grouplbl{color:var(--muted);margin-right:2px;font-size:11px;font-weight:700}.subbar .btngroup{background:var(--bg);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px;padding:5px 7px;display:inline-flex}.mini{border:1px solid var(--border);cursor:pointer;color:var(--muted);background:#fff;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:600}.mini.on{background:var(--primary);color:#fff;border-color:var(--primary)}.mini:disabled{opacity:.38;cursor:default}.pipe{align-items:stretch;padding:6px 0;display:flex;overflow-x:auto}.pipe+.pipe{border-top:1px dashed var(--border)}.pipe .pkind{align-items:center;min-width:56px;font-size:12.5px;font-weight:800;display:flex}.pipe-step{text-align:center;min-width:104px;color:inherit;border-radius:10px;flex:1;padding:8px 6px;text-decoration:none;display:block;position:relative}.pipe-step+.pipe-step:before{content:"›";color:#c9cde0;font-weight:800;position:absolute;top:38%;left:-7px}.pipe-step .nm{color:var(--muted);white-space:nowrap;font-size:11.5px;font-weight:700}.pipe-step .ct{margin:3px 0 2px;font-size:19px;font-weight:800}.pipe-step .al{white-space:nowrap;min-height:14px;font-size:10.5px;font-weight:700}.pipe-step.hot{background:#fff1f0;border:1px solid #ffd6d9}.pipe-step.zero .ct{color:#c3c7d6}.pipe-step:hover{outline:1px solid var(--primary)}.btngroup{flex-wrap:wrap;align-items:center;gap:7px;display:inline-flex}.bar-lg .btngroup{gap:9px}.bar-lg{gap:14px;padding:15px 17px}.bar-lg .grouplbl{font-size:14px;font-weight:700}.bar-lg .mini{border-radius:10px;padding:6px 13px;font-size:14.5px}.bar-lg select{border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 10px;font-size:15px}.bar-lg input{border:1px solid var(--border);border-radius:10px;padding:8px 12px;font-size:15px}input,textarea,select{border-color:var(--field-border)!important}input:focus,textarea:focus,select:focus{box-shadow:0 0 0 3px var(--primary-weak);outline:none;border-color:var(--primary)!important}.btngroup .mini{color:var(--slate)}.btngroup .mini.on{color:#fff}.bar-lg .btngroup{border:1px solid var(--border);background:#edeff5;border-radius:12px;gap:3px;padding:3px 4px}.bar-lg .btngroup .mini{background:0 0;border-color:#0000}.bar-lg .btngroup .mini.on{background:var(--primary);border-color:var(--primary)}.btn{border:1px solid var(--border);background:var(--card);color:var(--slate);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-size:13.5px;font-weight:700;line-height:1.3;display:inline-flex}.btn.sm{border-radius:8px;padding:4px 10px;font-size:12px}.btn.lg{border-radius:10px;padding:9px 18px;font-size:14.5px}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.danger{color:var(--neg);border-color:#f5c2cc}.btn:disabled{opacity:.45;cursor:default}.btn:hover:not(:disabled){filter:brightness(.97)}.input{border:1px solid var(--border);background:var(--card);border-radius:8px;height:36px;padding:0 10px;font-size:13px}.input.sm{height:32px;padding:0 8px;font-size:12.5px}textarea.input{height:auto;padding:8px 10px;line-height:1.5}.field{flex-direction:column;gap:4px;display:flex}.field>.flabel{color:var(--muted);font-size:12px;font-weight:600}.field>.flabel .req{color:var(--neg);margin-left:2px}.field>.fhelp{color:var(--muted);font-size:11.5px}.field>.fhelp.err{color:var(--neg);font-weight:600}.field.invalid .input{border-color:var(--neg)!important}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.tabs .tab{color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 16px;font-size:13.5px;font-weight:600}.tabs .tab.on{color:var(--primary);border-bottom-color:var(--primary);font-weight:800}.tabs .tab .tbadge{background:var(--warn);color:#fff;vertical-align:1px;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:10px;font-weight:800}.chip.ok{background:var(--pos-bg);color:var(--pos)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.bad{background:var(--neg-bg);color:var(--neg)}.chip.info{background:var(--primary-weak);color:var(--primary)}.chip.off{background:var(--bg);color:var(--muted);border:1px solid var(--border)}.skel{background:linear-gradient(90deg,var(--bg) 25%,#e9ebf5 50%,var(--bg) 75%);background-size:200% 100%;border-radius:6px;animation:1.4s infinite skel-shim}@keyframes skel-shim{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skel{animation:none}}.empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:4px;padding:26px 12px;display:flex}.empty b{color:var(--ink);font-size:13.5px}.empty .ehint{max-width:34em;font-size:12px}.empty .btn{margin-top:8px}.navleaf .favbtn{opacity:0;transition:opacity .12s}.navleaf:hover .favbtn,.navleaf .favbtn.favon{opacity:1}.metatable th:first-child,.metatable td:first-child{z-index:3;background:var(--card);position:sticky;left:0}.metatable th:nth-child(2),.metatable td:nth-child(2){z-index:3;background:var(--card);position:sticky;left:32px;box-shadow:6px 0 8px -6px #14161b1a}.metatable thead th:first-child,.metatable thead th:nth-child(2){background:#f4f5fa}.metatable tbody tr.lv2 td:first-child,.metatable tbody tr.lv2 td:nth-child(2){background:#fafbff}.metatable tbody tr.lv3 td:first-child,.metatable tbody tr.lv3 td:nth-child(2){background:#f6f7fc}.metatable tbody tr.tot td:first-child,.metatable tbody tr.tot td:nth-child(2),.metatable tbody tr.lv2{background:#fafbff}.metatable tbody tr.lv3{background:#f6f7fc}.trendtable td.gname{z-index:3;text-align:left;vertical-align:middle;border-left:3px solid #0000;width:104px;min-width:104px;max-width:104px;font-weight:800;position:sticky;left:0}.trendtable td.gname .gtoggle{cursor:pointer;font:inherit;color:inherit;letter-spacing:-.2px;background:0 0;border:none;padding:0;font-weight:800}.trendtable td.gname .tri{color:#41505f;margin-right:5px;font-size:11px;font-weight:400}.trendtable .mini{color:var(--muted);margin-top:3px;font-size:10.5px;font-weight:400}.trendtable td.metric{z-index:3;text-align:left;color:#41505f;font-weight:600;position:sticky;left:104px;box-shadow:6px 0 8px -6px #14161b1a}.trendtable thead th:first-child{z-index:3;background:#f4f5fa;position:sticky;left:0;box-shadow:6px 0 8px -6px #14161b1a}.trendtable tbody tr.g-today td{background:#f7fafe}.trendtable tbody tr.g-yest td{background:#f9f9fa}.trendtable tbody tr.g-week td{background:#fffbf4}.trendtable td.gname.g-today{border-left-color:var(--c1)}.trendtable td.gname.g-yest{border-left-color:var(--muted)}.trendtable td.gname.g-week{border-left-color:var(--c3)}.trendtable tbody tr.gtop>td{border-top:2px solid #e3e6f0}.metatable thead th:not(.l){text-align:right}.metatable{--budget-pencil-slot:22px}.metatable thead th.budget-th,.metatable tbody td.budget-td{padding-right:calc(10px + var(--budget-pencil-slot))}.metatable tbody td.budget-td{position:relative}.roas-pill{border-radius:999px;padding:2px 9px;font-size:12.5px;font-weight:700;display:inline-block}.roas-pill.ok{background:var(--pos-bg);color:var(--pos)}.roas-pill.warn{background:var(--warn-bg);color:var(--warn)}.roas-pill.bad{background:var(--neg-bg);color:var(--neg)}.roas-pill.holdout{color:var(--muted);background:#f1f2f6}.tgtbar{background:var(--card);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;display:flex}.tgtbar .tgtlbl{color:#41505f;white-space:nowrap;font-size:12.5px;font-weight:700}.tgtpill{background:var(--bg);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:12px;display:inline-flex}.tgtpill.unset{color:var(--muted);border-style:dashed}.tgtpanel{background:var(--card);border:1px solid var(--border);border-radius:12px;margin-bottom:12px;padding:14px 16px}.tgtpanel input{text-align:right;border:1px solid var(--field-border);border-radius:6px;width:88px;padding:3px 7px;font-size:12.5px}.tgtpanel input.note{text-align:left;width:220px}.tgtpanel-split{grid-template-columns:minmax(0,max-content) minmax(280px,340px);justify-content:start;align-items:start;gap:24px;display:grid}@media (max-width:1200px){.tgtpanel-split{grid-template-columns:1fr}}.tgtlegend{border-left:1px solid var(--border);padding-left:20px}@media (max-width:1200px){.tgtlegend{border-left:0;border-top:1px solid var(--border);padding-top:14px;padding-left:0}}.tgtlegend h4{color:#41505f;margin:0 0 8px;font-size:12.5px}.tgtlegend h4+table,.tgtlegend h4~table{margin-bottom:6px}.tgtlegend ul{flex-direction:column;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.tgtlegend li{align-items:center;gap:7px;font-size:12px;line-height:1.5;display:flex}.tgtlegend .nopill{padding:2px 9px;font-size:12.5px;font-weight:700;display:inline-block}.tgtlegend p.mut{margin:0 0 14px;font-size:11px;line-height:1.6}.tgtlegend .tgtbands{width:100%;font-size:11.5px}.tgtlegend .tgtbands th,.tgtlegend .tgtbands td{white-space:nowrap;padding:4px 6px}.tgtnotice{background:var(--warn-surface);border:1px solid var(--warn-border);color:var(--warn);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;padding:8px 14px;font-size:12.5px;font-weight:600;display:flex}.tgtnotice button{margin-left:auto}.budget-inline{justify-content:flex-end;align-items:center;gap:4px;display:inline-flex}.budget-inline input{border:1px solid var(--field-border);text-align:right;border-radius:6px;width:88px;padding:3px 6px;font-size:13px}.budget-pencil{opacity:0;cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;margin:0;padding:2px 4px;font-size:12px;line-height:1;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.metatable tbody tr:hover .budget-pencil,.budget-pencil:focus-visible{opacity:1}.budget-pencil:hover{color:var(--primary);background:var(--primary-weak)}.meta-toggle{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:999px;flex:none;width:34px;height:19px;padding:0;transition:background-color .15s,border-color .15s;position:relative}.meta-toggle .meta-toggle-thumb{background:#fff;border-radius:50%;width:15px;height:15px;transition:transform .15s;position:absolute;top:1px;left:1px;box-shadow:0 1px 2px #14161b40}.meta-toggle.on{background:var(--pos);border-color:var(--pos)}.meta-toggle.on .meta-toggle-thumb{transform:translate(15px)}.meta-toggle.mismatch{background:var(--warn-surface);border-color:var(--warn-border)}.meta-toggle.pending{background:var(--muted);border-color:var(--muted);opacity:.55;cursor:default}.meta-toggle:disabled{cursor:default}.meta-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
