:root{--bg-main:#f8fafc;--bg-surface:#fff;--bg-card:#fff;--bg-card-hover:#f1f5f9;--bg-input:#fff;--border-color:#e2e8f0;--border-hover:#cbd5e1;--border-focus:#2563eb66;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--accent-blue:#2563eb;--accent-blue-hover:#1d4ed8;--accent-blue-glow:#2563eb26;--status-idle:#64748b;--status-running:#d97706;--status-success:#059669;--status-failed:#dc2626;--stage-portal:#2563eb;--stage-portal-bg:#eff6ff;--stage-portal-border:#bfdbfe;--stage-publisher:#4f46e5;--stage-publisher-bg:#eef2ff;--stage-publisher-border:#c7d2fe;--stage-cms:#d97706;--stage-cms-bg:#fffbeb;--stage-cms-border:#fde68a;--sidebar-width:260px;--sidebar-collapsed-width:72px;--header-height:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-card:0 1px 3px 0 #0000000d, 0 1px 2px -1px #0000000d;--shadow-hover:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-glow:0 0 20px #2563eb1f;--transition-speed:.18s;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", monospace}*{box-sizing:border-box}body{font-family:var(--font-sans);background:var(--bg-main);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0;font-size:.88rem;line-height:1.5}h1,.page-title{letter-spacing:-.02em;font-size:1.25rem;font-weight:700}h2,.section-title{letter-spacing:-.01em;font-size:1.1rem;font-weight:700}h3,.card-title{letter-spacing:-.01em;font-size:.95rem;font-weight:700}a{color:var(--accent-blue);text-decoration:none}a:hover{color:var(--accent-blue-hover)}code,.code-inline{font-family:var(--font-mono);font-size:.82rem}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-speed) ease, border-color var(--transition-speed) ease, color var(--transition-speed) ease, box-shadow var(--transition-speed) ease;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:.55rem 1rem;font-family:inherit;font-size:.85rem;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent-blue);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--accent-blue-hover);box-shadow:var(--shadow-glow)}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-color)}.btn-secondary:hover{border-color:var(--border-hover);background:var(--bg-card-hover)}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible,.action-link:focus-visible,.nav-item:focus-visible,.icon-button:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.field{margin-bottom:1.1rem}.field label{color:var(--text-secondary);margin-bottom:.35rem;font-size:.78rem;font-weight:600;display:block}.field .hint{color:var(--text-muted);margin-top:.35rem;font-size:.78rem;font-weight:500}.input,.input-group input{border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);background:var(--bg-input);transition:border-color var(--transition-speed) ease, box-shadow var(--transition-speed) ease;outline:none;padding:.6rem .8rem;font-family:inherit;font-size:.88rem}.input::placeholder{color:var(--text-muted)}.input:hover{border-color:var(--border-hover)}.input:focus,.input-group input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px var(--accent-blue-glow)}.input[readonly]{background:var(--bg-main);font-family:var(--font-mono);font-size:.82rem}.input-group{border-radius:var(--radius-sm);align-items:stretch;display:flex;overflow:hidden}.input-group input{flex:1}.pulse-dot{background-color:currentColor;border-radius:50%;width:6px;height:6px}.pulse-dot.running{background-color:#f59e0b;animation:1s infinite pulse;box-shadow:0 0 8px #f59e0b}@keyframes pulse{0%{opacity:.8;transform:scale(.95)}50%{opacity:1;transform:scale(1.15)}to{opacity:.8;transform:scale(.95)}}@media (prefers-reduced-motion:reduce){.pulse-dot.running{animation:none}}.surface{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--border-color);overflow:hidden}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:460px;box-shadow:var(--shadow-hover);overflow:hidden}.modal__header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:1.1rem 1.5rem;display:flex}.modal__header h2{color:var(--text-primary);margin:0;font-size:1.05rem}.modal__close{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.modal__close:hover{background:var(--bg-card-hover);color:var(--text-primary)}.modal__body{padding:1.35rem 1.5rem .4rem}.modal__body>p{color:var(--text-secondary);margin:0 0 1rem}.modal__footer{justify-content:flex-end;gap:.6rem;padding:1rem 1.5rem 1.35rem;display:flex}@media (width<=768px){.modal__footer{flex-direction:column-reverse}.modal__footer .btn{width:100%}}.preview-line{color:var(--text-secondary);background:var(--bg-main);border:1px dashed var(--border-hover);border-radius:var(--radius-sm);align-items:center;gap:8px;margin-top:-.4rem;margin-bottom:1.1rem;padding:.65rem .8rem;font-size:.78rem;font-weight:500;display:flex}.preview-line strong{color:var(--accent-blue);font-family:var(--font-mono);font-size:.78rem;font-weight:600}.preview-line--stacked{flex-direction:column;align-items:stretch;gap:4px}.login-error{color:var(--status-failed);margin:0 0 1rem;font-size:.8rem;font-weight:500}html,body,#root{height:100%}body{margin:0}.login-page{background:radial-gradient(circle at 20% 15%, #2563eb1a, transparent 45%), radial-gradient(circle at 85% 85%, #4f46e514, transparent 45%), var(--bg-main);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.login-card{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-hover);padding:2.25rem 2rem 1.75rem}.login-card__brand{justify-content:center;align-items:center;gap:.7rem;margin-bottom:.4rem;display:flex}.login-card__brand .mark{border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--accent-blue), #60a5fa);color:#fff;width:38px;height:38px;box-shadow:var(--shadow-glow);justify-content:center;align-items:center;font-size:.9rem;font-weight:800;display:flex}.login-card__brand .name{letter-spacing:-.02em;font-size:1.2rem;font-weight:800}.login-card h1{text-align:center;letter-spacing:0;color:var(--text-secondary);margin:0 0 1.5rem;font-size:.88rem;font-weight:500}.login-footer-note{text-align:center;color:var(--text-muted);margin-top:1.4rem;font-size:.75rem;font-weight:500}.app-layout{min-height:100vh}.drawer{width:var(--sidebar-width);background:var(--bg-surface);border-right:1px solid var(--border-color);transition:width var(--transition-speed) ease;z-index:40;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.drawer.collapsed{width:var(--sidebar-collapsed-width)}.drawer-header{height:var(--header-height);border-bottom:1px solid var(--border-color);align-items:center;padding:0 1.2rem;display:flex}.drawer-brand{align-items:center;gap:.75rem;min-width:0;display:flex}.brand-icon{border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--accent-blue), #60a5fa);color:#fff;width:34px;height:34px;box-shadow:var(--shadow-glow);flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;font-weight:800;display:flex}.brand-title{letter-spacing:-.02em;white-space:nowrap;font-size:1rem;font-weight:800}.drawer-nav{flex-direction:column;flex:1;gap:.25rem;padding:.85rem .75rem;display:flex}.nav-section{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:.25rem .75rem .4rem;font-size:.7rem;font-weight:700}.nav-item{border-radius:var(--radius-sm);color:var(--text-secondary);white-space:nowrap;transition:background var(--transition-speed) ease, color var(--transition-speed) ease;align-items:center;gap:.75rem;padding:.6rem .75rem;font-weight:600;display:flex}.nav-item svg{flex-shrink:0;width:18px;height:18px}.nav-item:hover{background:var(--bg-card-hover);color:var(--text-primary)}.nav-item.active{background:var(--stage-portal-bg);color:var(--accent-blue)}.drawer-footer{border-top:1px solid var(--border-color);padding:.75rem}.collapse-btn{border-radius:var(--radius-sm);width:100%;color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:.75rem;padding:.55rem .75rem;font-family:inherit;font-size:.8rem;font-weight:600;display:flex}.collapse-btn:hover{background:var(--bg-card-hover);color:var(--text-primary)}.collapse-btn svg{width:18px;height:18px;transition:transform var(--transition-speed) ease;flex-shrink:0}.drawer.collapsed .collapse-btn svg{transform:rotate(180deg)}.drawer.collapsed .brand-title,.drawer.collapsed .nav-label,.drawer.collapsed .nav-section,.drawer.collapsed .collapse-label{display:none}.drawer.collapsed .drawer-header{justify-content:center;padding:0}.drawer.collapsed .nav-item,.drawer.collapsed .collapse-btn{justify-content:center;padding-left:0;padding-right:0}.main-wrapper{margin-left:var(--sidebar-width);min-height:100vh;transition:margin-left var(--transition-speed) ease}.main-wrapper.collapsed{margin-left:var(--sidebar-collapsed-width)}.top-header{z-index:30;height:var(--header-height);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color);background:#fffffff2;justify-content:space-between;align-items:center;gap:1rem;padding:0 1.75rem;display:flex;position:sticky;top:0}.top-header .page-title{margin:0}.header-right-area{align-items:center;gap:.85rem;min-width:0;display:flex}.header-user{align-items:center;gap:.6rem;min-width:0;display:flex}.avatar{background:var(--stage-publisher-bg);border:1px solid var(--stage-publisher-border);width:32px;height:32px;color:var(--stage-publisher);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:700;display:flex}.header-user-email{text-overflow:ellipsis;white-space:nowrap;max-width:240px;color:var(--text-secondary);font-size:.8rem;font-weight:600;overflow:hidden}.signout{border:1px solid var(--border-color);background:var(--bg-surface);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-speed) ease, color var(--transition-speed) ease;padding:.35rem .75rem;font-family:inherit;font-size:.78rem;font-weight:600}.signout:hover{border-color:var(--border-hover);color:var(--text-primary)}.page-content{max-width:1400px;margin:0 auto;padding:1.75rem}@media (width<=1160px){.header-user-email{display:none}}@media (width<=960px){.drawer{width:var(--sidebar-collapsed-width)}.main-wrapper{margin-left:var(--sidebar-collapsed-width)}.drawer .brand-title,.drawer .nav-label,.drawer .nav-section,.drawer .collapse-label{display:none}.drawer .drawer-header{justify-content:center;padding:0}.drawer .nav-item,.drawer .collapse-btn{justify-content:center;padding-left:0;padding-right:0}.drawer-footer{display:none}}@media (width<=768px){.top-header,.page-content{padding-left:1rem;padding-right:1rem}}.progress-banner{background:var(--stage-portal-bg);border-bottom:1px solid var(--stage-portal-border);padding:.7rem 1.75rem}.progress-banner__label{color:var(--accent-blue-hover);align-items:center;gap:.5rem;margin-bottom:.45rem;font-size:.78rem;font-weight:600;display:flex}.progress-banner__label .pulse-dot{background-color:var(--accent-blue);box-shadow:0 0 8px var(--accent-blue);animation:1s infinite pulse}.progress-banner__track{background:#dbeafe;border-radius:9999px;height:6px;overflow:hidden}.progress-banner__fill{background:linear-gradient(90deg,#2563eb,#60a5fa);border-radius:9999px;height:100%;transition:width .4s}@media (width<=768px){.progress-banner{padding-left:1rem;padding-right:1rem}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.9rem;margin-bottom:1.25rem;display:flex}.page-header h2{margin:0}.page-header p{color:var(--text-muted);margin:.15rem 0 0;font-size:.78rem;font-weight:500}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border-color);background:var(--bg-main);white-space:nowrap;padding:.8rem 1rem;font-size:.7rem;font-weight:700}tbody td{border-bottom:1px solid var(--border-color);vertical-align:middle;padding:1rem;font-size:.85rem}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background var(--transition-speed) ease}tbody tr:hover{background:var(--bg-card-hover)}.empty-row td{text-align:center;color:var(--text-muted);padding:2.5rem 1.25rem;font-weight:500}.site-name{letter-spacing:-.01em;font-weight:700}.site-domain{font-family:var(--font-mono);color:var(--text-muted);margin-top:.15rem;font-size:.75rem}.site-error{color:var(--status-failed);max-width:340px;margin-top:.25rem;font-size:.78rem;font-weight:500}.cell-muted{color:var(--text-secondary);white-space:nowrap}.actions-cell{flex-wrap:nowrap;gap:.5rem;display:flex}.col-actions{white-space:nowrap;width:1%}.action-link{--tone:var(--text-secondary);--tone-bg:var(--bg-surface);--tone-border:var(--border-color);border:1px solid var(--tone-border);background:var(--tone-bg);min-width:112px;color:var(--tone);white-space:nowrap;cursor:pointer;transition:background var(--transition-speed) ease, border-color var(--transition-speed) ease, box-shadow var(--transition-speed) ease, transform var(--transition-speed) ease;border-radius:6px;justify-content:center;align-items:center;gap:.4rem;padding:.35rem .6rem;font-family:inherit;font-size:.78rem;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.action-link svg{flex-shrink:0;width:14px;height:14px}.action-link.portal{--tone:var(--stage-portal);--tone-bg:var(--stage-portal-bg);--tone-border:var(--stage-portal-border)}.action-link.publisher{--tone:var(--stage-publisher);--tone-bg:var(--stage-publisher-bg);--tone-border:var(--stage-publisher-border)}.action-link.cms{--tone:var(--stage-cms);--tone-bg:var(--stage-cms-bg);--tone-border:var(--stage-cms-border)}.action-link:hover:not(:disabled){color:var(--tone);border-color:var(--tone);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.action-link:disabled{opacity:.45;cursor:not-allowed}
