:root{--surface-1:#ffffff;--page-plane:#f4f6f9;--text-primary:#1a1a2e;--text-secondary:#444444;--text-muted:#888888;--gridline:#e0e4ea;--border:#d0d4dc;--series-blue:#1a56db;--series-blue-soft:rgba(26,86,219,0.08);--good:#12b76a;--good-bg:#ecfdf5;--warning:#f59e0b;--warning-bg:#fffbeb;--serious:#ef4444;--serious-bg:#fef2f2;--critical:#dc2626;--critical-bg:#fee2e2;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 3px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 6px rgba(0,0,0,0.07),0 2px 4px rgba(0,0,0,0.05);--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}[data-theme=dark]{--surface-1:#1e2028;--page-plane:#16181f;--text-primary:#e8eaf0;--text-secondary:#a0a4b0;--text-muted:#606470;--gridline:#2a2d38;--border:#333748;--series-blue:#4c7bf3;--series-blue-soft:rgba(76,123,243,0.12);--good:#34d399;--good-bg:rgba(52,211,153,0.1);--warning:#fbbf24;--warning-bg:rgba(251,191,36,0.1);--serious:#f87171;--serious-bg:rgba(248,113,113,0.1);--critical:#ef4444;--critical-bg:rgba(239,68,68,0.1)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:var(--font-sans);background:var(--page-plane);color:var(--text-primary);min-height:100vh}a{color:var(--series-blue);text-decoration:none}a:hover{text-decoration:underline}.portal-wrap{max-width:1280px;margin:0 auto;padding:0 24px 48px}.card{padding:20px}.card,.content-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.content-card{padding:24px;display:flex;flex-direction:column;gap:16px;transition:box-shadow .15s ease}.content-card:hover{box-shadow:var(--shadow-md)}.content-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.content-card__type{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:6px}.content-card__title{font-size:17px;font-weight:600;color:var(--text-primary);line-height:1.35}.content-card__body{font-size:14px;color:var(--text-secondary);line-height:1.65;white-space:pre-wrap}.content-card__attribution{font-size:12px;color:var(--text-muted);font-style:italic}.content-card__actions{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;cursor:pointer;border:none;transition:all .15s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--series-blue);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(1.1)}.btn-success{background:var(--good);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.05)}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text-secondary)}.btn-outline:hover:not(:disabled){background:var(--series-blue-soft);border-color:var(--series-blue);color:var(--series-blue)}.btn-danger{background:transparent;border:1px solid var(--serious);color:var(--serious)}.btn-danger:hover:not(:disabled){background:var(--serious-bg)}.btn-sm{padding:6px 12px;font-size:13px}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge-pending{background:var(--warning-bg);color:var(--warning)}.badge-approved{background:var(--good-bg);color:var(--good)}.badge-changes{background:var(--serious-bg);color:var(--serious)}.badge-published{background:var(--series-blue-soft);color:var(--series-blue)}.client-header{background:var(--surface-1);border-bottom:1px solid var(--border);padding:0 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.client-header__inner{max-width:1280px;margin:0 auto;height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px}.client-header__logo{height:36px;width:auto;object-fit:contain}.client-header__name{font-size:16px;font-weight:600;color:var(--text-primary)}.client-header__user{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-secondary)}.client-header__avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;border:2px solid var(--border)}.audit-ticker{background:var(--page-plane);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;color:var(--text-muted);overflow:hidden;max-height:180px;overflow-y:auto}.audit-ticker__item{display:flex;gap:10px;padding:5px 0;border-bottom:1px solid var(--gridline);font-size:13px;line-height:1.4}.audit-ticker__item:last-child{border-bottom:none}.audit-ticker__time{color:var(--text-muted);white-space:nowrap;flex-shrink:0}.audit-ticker__event{color:var(--text-secondary)}.panel-title{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:12px}.tw-row{display:flex;align-items:flex-start;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--gridline);gap:8px;text-decoration:none;color:inherit}.tw-row:last-child{border-bottom:none}.tw-row:hover .tw-name{color:var(--series-blue)}.tw-name{font-size:14px;color:var(--text-primary)}.tw-meta{display:flex;gap:6px;flex-shrink:0;align-items:center}.tw-project{font-size:12px;color:var(--text-muted)}.tw-due{font-size:12px;font-weight:500}.tw-due--ok{color:var(--good)}.tw-due--warn{color:var(--warning)}.tw-due--overdue{color:var(--serious)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--surface-1);border-radius:var(--radius-lg);box-shadow:0 20px 60px rgba(0,0,0,.2);width:100%;max-width:560px;padding:28px}.modal__title{font-size:18px;font-weight:700;margin-bottom:16px}.modal__body{font-size:14px;color:var(--text-secondary);margin-bottom:20px;line-height:1.6}.modal textarea{width:100%;min-height:120px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;font-family:var(--font-sans);font-size:14px;color:var(--text-primary);background:var(--page-plane);resize:vertical}.modal textarea:focus{outline:none;border-color:var(--series-blue)}.modal__actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.promo-strip{background:linear-gradient(135deg,var(--series-blue) 0,#0e3bb5 100%);border-radius:var(--radius-md);padding:20px 24px;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:16px}.promo-strip__text h3{font-size:16px;font-weight:700;margin-bottom:4px}.promo-strip__text p{font-size:14px;opacity:.85}.promo-strip__cta{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);color:#fff;padding:8px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer;transition:background .15s}.promo-strip__cta:hover{background:rgba(255,255,255,.25)}.dashboard-grid{display:grid;grid-template-columns:1fr 340px;grid-gap:24px;gap:24px;margin-top:24px}.dashboard-main,.dashboard-sidebar{display:flex;flex-direction:column;gap:24px}.content-grid{display:flex;flex-direction:column;gap:16px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--page-plane)}.login-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px;width:100%;max-width:420px;text-align:center;box-shadow:var(--shadow-md)}.login-card__logo{width:120px;margin:0 auto 24px;display:block}.login-card__title{font-size:22px;font-weight:700;margin-bottom:8px}.login-card__sub{font-size:15px;color:var(--text-secondary);margin-bottom:28px;line-height:1.5}.btn-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 20px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:15px;font-weight:500;color:var(--text-primary);cursor:pointer;transition:all .15s}.btn-google:hover{background:var(--page-plane);border-color:var(--series-blue)}@media (max-width:900px){.dashboard-grid{grid-template-columns:1fr}.portal-wrap{padding:0 16px 32px}}@media (max-width:600px){.content-card__actions{flex-direction:column}.btn{width:100%;justify-content:center}}