:root{--ink: #1a1a1a;--muted: #5f6368;--line: #dde1e6;--panel: #f5f7fa;--bg: #ffffff;--accent: #0b5394;--accent-soft: #e8f0f8;--ok: #15803d;--ok-soft: #e7f5ec;--warn: #b45309;--warn-soft: #fdf0e1;--bad: #b91c1c;--bad-soft: #fde8e8;--radius: 8px;font-family:-apple-system,Segoe UI,Helvetica,Arial,sans-serif;font-size:14px;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button,input,select{font:inherit}.app{display:grid;grid-template-columns:220px 1fr;grid-template-rows:56px 1fr;height:100%}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:16px;padding:0 20px;border-bottom:1px solid var(--line)}.brand{font-weight:700;font-size:17px;color:var(--accent);margin:0}.brand small{font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-left:6px}.topbar .spacer{flex:1}.topbar .confirm{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.account{text-align:right;line-height:1.25}.account .tenant{font-weight:600}.account .user{font-size:12px;color:var(--muted)}.nav{border-right:1px solid var(--line);padding:16px 10px;display:flex;flex-direction:column;gap:4px;background:var(--panel)}.nav a{display:flex;align-items:center;justify-content:space-between;text-align:left;padding:9px 12px;border-radius:6px;cursor:pointer;color:var(--ink);text-decoration:none}.nav a:hover{background:#e9edf2}.nav a.active{background:var(--accent);color:#fff}.nav .spacer{flex:1}.nav a.pinned{padding:6px 12px 6px 24px;font-size:13px;gap:6px}.nav a.pinned .label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.main{overflow:auto;padding:24px 28px;min-width:0}.main.flush{padding:0;overflow:hidden;display:flex}h1{font-size:22px;margin:0 0 4px}h2{font-size:16px;margin:24px 0 8px}.lead{color:var(--muted);margin:0 0 20px;max-width:760px}p{line-height:1.5}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:7px 14px;border-radius:6px;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){border-color:#b8c0ca;background:#fafbfc}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:#094679}.btn.danger{color:var(--bad)}.btn.danger-solid{background:var(--bad);border-color:var(--bad);color:#fff}.btn.danger-solid:hover:not(:disabled){background:#991b1b}.btn.small{padding:4px 10px;font-size:13px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card{border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;background:#fff}.card+.card{margin-top:12px}.notice{border-radius:var(--radius);padding:10px 14px;margin:12px 0}.notice.error{background:var(--bad-soft);color:var(--bad)}.notice.warn{background:var(--warn-soft);color:var(--warn)}.notice.info{background:var(--accent-soft);color:var(--accent)}.notice.ok{background:var(--ok-soft);color:var(--ok)}.badge{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:10px;white-space:nowrap}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.muted{background:#eef0f3;color:var(--muted)}.badge.info{background:var(--accent-soft);color:var(--accent)}.log{background:#0f172a;color:#e2e8f0;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.45;padding:10px 12px;border-radius:6px;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.log .err{color:#fca5a5}.log .warn{color:#fcd34d}.log .step{color:#93c5fd;font-weight:700}code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px;background:#eef0f3;padding:1px 5px;border-radius:4px}.tools>.card{margin-top:0}.tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}.tool-choice{display:flex;gap:12px;align-items:flex-start;cursor:pointer}.tool-choice.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tool-choice input{margin-top:3px}.tool-choice .name{font-weight:600}.tool-choice .desc{font-size:13px;color:var(--muted);margin-top:2px;line-height:1.45}.settings{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px 18px;margin-top:10px}.settings label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}.settings label span{font-weight:400;color:var(--muted);font-size:12px}.settings input[type=number],.settings input[type=text],.settings select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-weight:400}.settings .check{flex-direction:row;align-items:center;gap:8px}details summary{cursor:pointer;color:var(--accent);font-weight:600}.progress-card .head{display:flex;justify-content:space-between;align-items:center;gap:10px}.bar{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden;margin:10px 0 6px}.bar>div{height:100%;background:var(--accent);transition:width .3s}.bar.done>div{background:var(--ok)}.bar.failed>div{background:var(--bad)}.step-label{font-size:13px;color:var(--muted)}.results{display:grid;grid-template-columns:280px 1fr;height:100%;width:100%;min-height:0}.run-list{border-right:1px solid var(--line);overflow:auto}.run-list .empty{padding:20px;color:var(--muted)}.run-item{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:#fff;padding:12px 16px;cursor:pointer}.run-item:hover{background:var(--panel)}.run-item.active{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.run-item .when{font-weight:600}.run-item .meta{font-size:12px;color:var(--muted);margin-top:3px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.run-detail{display:flex;flex-direction:column;min-width:0;min-height:0}.run-header{padding:16px 20px 0}.run-header .title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.run-header h1{font-size:18px}.run-header .confirm{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.run-header .meta{color:var(--muted);font-size:13px;margin-top:2px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);padding:0 20px;margin-top:12px}.tabs button{border:0;background:none;padding:9px 14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.tabs .group-label{align-self:center;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-right:6px}.subtabs{display:flex;gap:6px;padding:10px 20px;border-bottom:1px solid var(--line);align-items:center}.subtabs button{border:1px solid var(--line);background:#fff;border-radius:14px;padding:4px 12px;font-size:13px;cursor:pointer}.subtabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}.subtabs .spacer{flex:1}.pane{flex:1;min-height:0;overflow:auto}.pane.padded{padding:16px 20px}.report-frame{width:100%;height:100%;border:0;display:block;background:#fff}.summary-image{max-width:100%;height:auto;display:block;margin:0 auto;border:1px solid var(--line);box-shadow:0 2px 10px #0000000f}.data-toolbar{display:flex;gap:10px;align-items:center;padding:10px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}.data-toolbar select,.data-toolbar input{padding:6px 8px;border:1px solid var(--line);border-radius:6px}.data-toolbar input[type=search]{min-width:240px}.data-toolbar .count{color:var(--muted);font-size:13px}.table-scroll{overflow:auto;flex:1;min-height:0}table.data{border-collapse:collapse;font-size:12.5px;min-width:100%}table.data th,table.data td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap;max-width:380px;overflow:hidden;text-overflow:ellipsis}table.data th{position:sticky;top:0;background:#f2f5f9;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;z-index:1}table.data th .sort{color:var(--accent);margin-left:4px}table.data tbody tr:hover{background:#fafbfc}table.data td.num{text-align:right;font-variant-numeric:tabular-nums}.pager{display:flex;gap:8px;align-items:center;padding:8px 20px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.center{display:flex;align-items:center;justify-content:center;height:100%}.landing{max-width:760px;margin:0 auto;padding:40px 20px 32px}.landing .brand{font-size:26px}.signin-page{min-height:100%;display:flex;flex-direction:column;font-size:15px;background:linear-gradient(180deg,var(--accent-soft) 0%,#fff 70%)}.signin-page a{color:var(--accent)}.signin-page a:hover{color:#083d6e}.signin-page a:focus-visible,.signin-page button:focus-visible{outline:3px solid #7aa7d6;outline-offset:2px;border-radius:4px}.preview-band{background:#083d6e;color:#fff;font-size:13px;text-align:center;padding:7px 16px}.signin-header{display:flex;align-items:center;height:64px;padding:0 24px;background:#fffffff5;border-bottom:1px solid var(--line)}.signin-page .logo{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:18px;color:var(--accent);text-decoration:none;white-space:nowrap}.signin-page .logo img{width:28px;height:28px;display:block}.signin-main{flex:1;display:flex;flex-direction:column;align-items:center;padding:64px 20px 48px}.signin-card{width:100%;max-width:480px;padding:32px;border-radius:10px;box-shadow:0 1px 2px #1018280f,0 12px 32px #1018281f}.signin-card h1{font-size:26px;line-height:1.2;letter-spacing:-.01em;margin:0 0 14px}.signin-card .notice{margin:0 0 14px}.signin-card .signin-lead{margin:0 0 14px;color:#3c4043}.signin-card .checks{list-style:none;padding:0;margin:0 0 20px}.signin-card .checks li{position:relative;padding-left:1.7em;margin:.5em 0;line-height:1.5}.signin-card .checks li:before{content:"✓";position:absolute;left:0;top:0;color:var(--ok);font-weight:700}.btn.large{padding:11px 22px;font-size:15px;font-weight:600;border-radius:8px}.signin-card .btn.large{width:100%}.signin-more{margin:24px 0 0;color:var(--muted);text-align:center}.signin-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 24px;padding:20px 24px;background:var(--panel);border-top:1px solid var(--line);font-size:13px}.signin-footer nav{display:flex;flex-wrap:wrap;gap:8px 20px}.signin-page .signin-footer a{color:var(--ink);text-decoration:none}.signin-page .signin-footer a:hover{color:var(--accent)}@media(max-width:520px){.signin-main{padding:32px 16px}.signin-card{padding:22px}.signin-header,.signin-footer{padding-left:16px;padding-right:16px}}.linkbtn{border:none;background:none;padding:0;color:var(--accent);cursor:pointer;font:inherit}.linkbtn:hover:not(:disabled){text-decoration:underline}.linkbtn:disabled{opacity:.5;cursor:default}.muted{color:var(--muted)}fieldset.settings{border:0;padding:0;margin:10px 0 0;min-width:0}fieldset.settings:disabled{opacity:.6}table.kv th{text-align:left;font-weight:600;color:var(--muted);padding:3px 18px 3px 0;font-size:13px}table.kv td{padding:3px 0;font-size:13px}table.tiers{width:100%;border-collapse:collapse}table.tiers th,table.tiers td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top;text-align:center}table.tiers th{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}table.tiers th:first-child,table.tiers td:first-child{text-align:left}table.tiers td:first-child{font-weight:400}table.tiers .yes{color:var(--ok);font-weight:700}table.tiers .no{color:var(--muted)}table.tiers .current{background:var(--accent-soft)}.checklist{width:100%;border-collapse:collapse}.checklist th,.checklist td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}.checklist th{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.locked-pane{max-width:560px}.placeholder{padding:24px 28px}.subscription{max-width:860px}.current-tier h2{margin:0}.current-tier .source{margin:2px 0 10px;font-weight:600}.current-tier .row{margin-top:12px}.current-tier .notice,.subscription .upgrades+.notice{margin-bottom:0}.subscription .upgrades{margin-top:14px}.subscription>.muted{margin-top:12px}.danger-zone{margin-top:32px;border-color:var(--bad);background:var(--bad-soft)}.danger-zone h2{margin:0 0 8px;color:var(--bad)}.danger-zone p{margin:0 0 14px}.close-confirm label{display:block;font-weight:600;margin-bottom:6px}.close-confirm input[type=text]{padding:6px 8px;border:1px solid var(--line);border-radius:6px;min-width:280px}.tool-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-bottom:16px}.tool-list>.card+.card{margin-top:0}.tool-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;cursor:pointer;font:inherit;color:inherit}.tool-card:hover:not(:disabled){border-color:#b8c0ca}.tool-card:disabled{cursor:default;opacity:.6}.tool-card .tier-note{font-weight:600}.back-link{background:none;border:none;padding:0;margin-bottom:10px;font:inherit;font-size:13px;color:var(--accent);cursor:pointer}.back-link:hover{text-decoration:underline}.tool-title{align-items:center;gap:10px;margin-bottom:4px;max-width:1100px}.tool-title h1{margin-bottom:0}.tool-title .spacer{flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;border:0;background:none;padding:6px;border-radius:6px;color:var(--muted);cursor:pointer}.icon-btn:hover{background:#eef0f3;color:var(--ink)}.icon-btn.on,.icon-btn.on:hover{color:var(--accent)}.tool-card .name{font-weight:600}.tool-card .desc{font-size:13px;color:var(--muted);line-height:1.45}.tool-panel{max-width:1100px}.tool-form{display:flex;flex-direction:column;gap:12px;max-width:420px}.tool-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}.tool-form label span{font-weight:400;color:var(--muted);font-size:12px}.tool-form label .optional{margin-left:6px}.tool-form input[type=text],.tool-form select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-weight:400}.tool-progress{margin-top:14px}.tool-results{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;max-height:520px}.tool-results .data-toolbar{padding:10px 14px}.warning-list{margin:0;padding-left:18px}.tool-actions{margin:4px 0 12px}.result-exports{margin:0 0 10px}.confirm-action{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;max-width:760px;background:var(--panel)}.confirm-action.danger{border-color:var(--bad);background:var(--bad-soft)}.confirm-action p{margin:0 0 10px;color:var(--ink)}.choice-list{display:flex;flex-direction:column;gap:6px;max-width:760px}.choice{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:6px;padding:8px 12px;cursor:pointer;font:inherit;color:inherit}.choice:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.choice:disabled{cursor:default;opacity:.6}.choice .name{font-weight:600}.choice .desc{font-size:12px;color:var(--muted)}.subtab-error{color:var(--bad);font-size:13px;max-width:460px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subtabs .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.settings label span.field-error,.field-error{color:var(--bad);font-size:12px}.settings input[aria-invalid=true]{border-color:var(--bad)}.settings-status{font-size:12px;color:var(--muted);min-height:1.4em;margin-top:6px}.price-editor{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.price-table{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:6px}table.prices{border-collapse:collapse;width:100%;font-size:13px}table.prices th,table.prices td{padding:5px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}table.prices th{position:sticky;top:0;background:#f2f5f9;font-weight:600;z-index:1}table.prices td.sku{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px;white-space:nowrap}table.prices input{width:120px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;text-align:right}table.prices input[aria-invalid=true],.price-add input[aria-invalid=true]{border-color:var(--bad)}.price-add{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:12px}.price-add label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}.price-add input{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-weight:400}.price-editor .confirm{display:inline-flex;align-items:center;gap:8px}
