:root{--bg: #f4f7fb;--bg-elevated: #ffffff;--border: #d9e2ec;--text: #102a43;--muted: #627d98;--brand: #0b6e4f;--brand-dark: #084c37;--brand-soft: #e3f5ee;--accent: #0c4a6e;--success: #0f7b3b;--success-bg: #e8f8ef;--danger: #b42318;--danger-bg: #fdeceb;--warning: #b54708;--warning-bg: #fff4e5;--shadow: 0 10px 30px rgba(16, 42, 67, .08);--radius: 14px;--font: "IBM Plex Sans", "DM Sans", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font);color:var(--text);background:radial-gradient(circle at top right,rgba(11,110,79,.08),transparent 28%),linear-gradient(180deg,#f8fafc 0%,var(--bg) 100%)}a{color:var(--brand);text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{background:#0b1f2a;color:#eef4f8;padding:1.25rem 1rem;display:flex;flex-direction:column;gap:1rem;min-height:100vh}.sidebar .logo{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem 1rem;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.sidebar .logo img{height:36px;width:auto;background:#fff;border-radius:8px;padding:4px 8px}.sidebar .logo span{font-weight:600;letter-spacing:.02em}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem;flex-shrink:0}.nav-link{display:flex;align-items:center;gap:.7rem;color:#d9e2ec;padding:.65rem .85rem;border-radius:10px;flex:0 0 auto;width:100%;min-height:0;line-height:1.2;text-decoration:none}.nav-link:hover,.nav-link.active{background:#ffffff14;color:#fff}.nav-badge{margin-left:auto;min-width:1.35rem;height:1.35rem;padding:0 .4rem;border-radius:999px;background:#e85d4c;color:#fff;font-size:.72rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.sidebar-footer{margin-top:auto;padding:.75rem;border-top:1px solid rgba(255,255,255,.08);flex-shrink:0}.main{padding:1.5rem 1.75rem 2.5rem;min-width:0;overflow-x:hidden}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem;gap:1rem;flex-wrap:wrap;min-width:0}.topbar>div:first-child{min-width:0;flex:1 1 auto}.topbar h1{margin:0;font-size:1.5rem}.topbar .meta{color:var(--muted);font-size:.95rem}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.2rem}.grid{display:grid;gap:1rem}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.partner-manage-row{align-items:start}.partner-manage-row>.card{height:auto;align-self:start}.stat{display:flex;flex-direction:column;gap:.35rem}.stat .label{color:var(--muted);font-size:.85rem}.stat .value{font-size:1.55rem;font-weight:700}.stat.success .value{color:var(--success)}.stat.danger .value{color:var(--danger)}.btn{border:none;border-radius:10px;padding:.65rem 1rem;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;font-weight:600}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand-dark)}.btn-secondary{background:#e6eef5;color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn:disabled{opacity:.6;cursor:not-allowed}.table-wrap{overflow:auto;max-width:100%}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.75rem .6rem;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-size:.82rem;text-transform:uppercase;letter-spacing:.04em}.activity-page .topbar{margin-bottom:.85rem}.activity-page .topbar h1{font-size:1.2rem}.activity-page .topbar .meta{font-size:.82rem}.activity-page .card{padding:.75rem .85rem;margin-bottom:.75rem}.activity-page .card h3{margin:0 0 .45rem;font-size:.95rem}.activity-page .filters-inline{display:flex;flex-wrap:wrap;gap:.5rem .65rem;align-items:end}.activity-page .filters-inline .form-row{flex:1 1 140px;min-width:120px;max-width:220px}.activity-page .filters-inline .form-row label{font-size:.75rem}.activity-page .filters-inline .form-row input,.activity-page .filters-inline .form-row select{padding:.4rem .55rem;border-radius:8px;font-size:.82rem}.activity-page .filters-inline .btn{padding:.4rem .75rem;font-size:.82rem;border-radius:8px}.activity-page .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.activity-page .table-compact{font-size:.78rem;table-layout:fixed}.activity-page .table-compact th,.activity-page .table-compact td{padding:.35rem .4rem;vertical-align:middle}.activity-page .table-compact th{font-size:.68rem;letter-spacing:.03em;white-space:nowrap}.activity-page .table-compact .cell-clip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-page .section-hint{margin:0 0 .65rem;font-size:.78rem}.activity-page .audit-card{border-left:3px solid var(--brand)}.activity-page .audit-table .what-cell{white-space:normal;word-break:break-word;line-height:1.35}.activity-page .audit-table .what-main{font-weight:600;font-size:.8rem}.activity-page .audit-table .what-detail{font-size:.72rem;margin-top:.15rem}.activity-page .table-compact .badge{font-size:.68rem;padding:.1rem .4rem}.activity-page .log-tail{margin:0;max-height:320px;overflow:auto;background:#0b1f2a;color:#eef4f8;padding:.65rem .75rem;border-radius:8px;font-size:11px;line-height:1.4;white-space:pre-wrap;word-break:break-word}.expandable-text{display:inline;color:inherit;font:inherit;word-break:break-word}button.expandable-text{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;width:100%;margin:0;padding:0;border:0;background:transparent;text-align:left;cursor:pointer;color:inherit}button.expandable-text:hover .expandable-text-hint,button.expandable-text:focus-visible .expandable-text-hint{text-decoration:underline}.expandable-text-body{white-space:pre-wrap;word-break:break-word;line-height:1.35}.expandable-text.is-toggle:not(.is-open) .expandable-text-body{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.expandable-text-hint{font-size:.68rem;font-weight:600;color:var(--brand);white-space:nowrap}.activity-page td.detail-col{white-space:normal;vertical-align:top;min-width:10rem}.badge{display:inline-flex;align-items:center;gap:.25rem;border-radius:999px;padding:.2rem .6rem;font-size:.78rem;font-weight:600}.badge-success{background:var(--success-bg);color:var(--success)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-muted{background:#eef2f6;color:var(--muted)}.form{display:grid;gap:.85rem;align-content:start;align-items:stretch}.form-row{display:grid;gap:.35rem;align-content:start}.form-row label{font-size:.9rem;color:var(--muted);font-weight:500}.form-row input,.form-row select,.form-row textarea{border:1px solid var(--border);border-radius:10px;padding:.7rem .8rem;background:#fff;width:100%;max-width:100%;box-sizing:border-box}.form-row input,.form-row select{min-height:2.6rem;height:2.6rem}.form>.btn,.form .btn{justify-self:start;width:auto;align-self:start}.form-row textarea{min-height:120px;height:auto;resize:vertical}.login-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow);padding:2rem 1.6rem}.login-card img{height:48px;margin-bottom:1rem}.login-card h1{margin:0 0 .35rem;font-size:1.4rem}.login-card p{margin:0 0 1.25rem;color:var(--muted)}.alert{border-radius:10px;padding:.75rem .9rem;margin-bottom:1rem}.alert-error{background:var(--danger-bg);color:var(--danger)}.alert-success{background:var(--success-bg);color:var(--success)}.stack{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.muted{color:var(--muted)}.mono{font-variant-numeric:tabular-nums}.toast-host{position:fixed;top:1rem;left:50%;transform:translate(-50%);z-index:1000;display:grid;gap:.6rem;width:min(560px,calc(100vw - 2rem));pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:.65rem;padding:.85rem .95rem;border-radius:12px;box-shadow:0 12px 30px #102a432e;border:1px solid var(--border);background:#fff;font-weight:500;animation:toast-in .16s ease-out}.toast-success{background:var(--success-bg);color:var(--success);border-color:#b7ebc8}.toast-error{background:var(--danger-bg);color:var(--danger);border-color:#f5c2c0}.toast-info{background:#eef6ff;color:var(--accent);border-color:#c9dff7}.toast-message{flex:1;line-height:1.35}.toast-close{border:none;background:transparent;color:inherit;cursor:pointer;padding:0;opacity:.7}.toast-close:hover{opacity:1}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.btn.busy,.btn:disabled{opacity:.7;cursor:wait}.btn .spinner{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:spin .7s linear infinite}.spinner.lg{width:22px;height:22px;border-width:2.5px}@keyframes spin{to{transform:rotate(360deg)}}.api-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:2000;pointer-events:none;opacity:0;background:transparent;transition:opacity .12s ease}.api-progress.active{opacity:1;background:linear-gradient(90deg,transparent,var(--brand),var(--brand-dark),transparent);background-size:200% 100%;animation:api-progress-slide 1s linear infinite}@keyframes api-progress-slide{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton{display:inline-block;vertical-align:middle;border-radius:6px;background:linear-gradient(90deg,#e8eef4,#f5f8fb,#e8eef4 90%);background-size:200% 100%;animation:skeleton-shine 1.15s ease-in-out infinite}@keyframes skeleton-shine{0%{background-position:100% 0}to{background-position:-100% 0}}.page-loading{display:flex;align-items:center;justify-content:center;gap:.75rem;min-height:180px;color:var(--muted);font-weight:500}.table-wrap.is-loading,.card.is-loading{position:relative}.table-wrap.is-loading:after,.card.is-loading:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff73;border-radius:inherit;pointer-events:none}@media(max-width:960px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:10}.grid-4,.grid-2{grid-template-columns:1fr 1fr}}@media(max-width:640px){.grid-4,.grid-2{grid-template-columns:1fr}.main{padding:1rem}}
