/* V45 public invitation and account surfaces. Scoped to avoid changing the app shell. */
.public-page, .auth-page {margin:0;min-height:100vh;background:#f5f7fb;color:#0f172a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.6;}
.public-page *, .auth-page *, .invite-wrap * {box-sizing:border-box;}
.public-page a, .auth-page a {color:#2563eb;text-decoration:none;}
.public-page a:hover, .auth-page a:hover {text-decoration:underline;}
.public-page button, .auth-page button, .public-page input, .public-page select {font:inherit;}
.public-page .page {width:min(1060px,100%);margin:0 auto;padding:24px 24px calc(32px + env(safe-area-inset-bottom));}
.public-brand {display:flex;align-items:center;gap:10px;color:#0f172a!important;font-size:18px;font-weight:750;text-decoration:none!important;}
.brand-symbol {width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:#2563eb;color:#fff;font-size:19px;font-weight:750;flex:0 0 auto;}
.public-topbar {display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:32px;}
.public-topbar .top-link {font-size:13px;font-weight:600;}
.public-layout {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;align-items:start;}
.public-page .hero {position:relative;padding:20px 0;background:none;color:#0f172a;text-align:left;}
.public-page .tag, .section-eyebrow {display:inline-flex;align-items:center;color:#2563eb;font-size:12px;font-weight:700;letter-spacing:.04em;margin:0 0 12px;}
.public-page .hero h1 {font-size:36px;line-height:1.25;letter-spacing:-.03em;margin:0 0 16px;}
.public-page .hero p, .public-page .summary {max-width:440px;margin:0;color:#64748b;line-height:1.8;font-size:14px;}
.public-page .benefits {display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0 0;}
.public-page .benefit {padding:16px;border:1px solid #dbeafe;border-radius:12px;background:#eff6ff;}
.public-page .benefit strong {display:block;font-size:24px;line-height:1.3;font-weight:750;color:#1d4ed8;margin-bottom:6px;}
.public-page .benefit span {display:block;color:#475569;font-size:12px;line-height:1.7;}
.public-page .steps {display:flex;gap:12px;flex-wrap:wrap;margin:20px 0 0;padding:0;list-style:none;color:#64748b;font-size:12px;}
.public-page .steps li {display:flex;gap:6px;align-items:center;}
.public-page .steps b {width:20px;height:20px;background:#e2e8f0;color:#475569;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;}
.public-page .card {min-width:0;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:28px;box-shadow:0 4px 18px #0f172a04;}
.public-page .card h2 {font-size:22px;line-height:1.4;letter-spacing:-.02em;margin:0 0 8px;}
.public-page .sub {color:#64748b;font-size:13px;line-height:1.7;margin:0 0 24px;}
.public-page .field {margin:0 0 18px;}
.public-page .field label {display:block;font-size:14px;font-weight:600;margin-bottom:7px;}
.public-page .field input, .public-page .field select, .public-page .url input {display:block;width:100%;max-width:100%;min-height:46px;border:1px solid #cbd5e1;border-radius:10px;padding:11px 12px;font-size:16px;color:#0f172a;background:#fff;}
.public-page .field input::placeholder {color:#94a3b8;}
.public-page :is(input,select,button,a,summary):focus-visible, .auth-page :is(input,select,button,a):focus-visible, .invite-wrap :is(input,button,a,summary):focus-visible {outline:3px solid #93c5fd;outline-offset:3px;}
.public-page .errors, .public-page .nonfield, .public-page .errorlist {margin:6px 0 0;padding:0;list-style:none;color:#b91c1c;font-size:13px;}
.public-page .nonfield {background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:12px;margin-bottom:16px;}
.public-page .primary, .public-page .claim, .public-page .secondary, .public-page .btn {display:inline-flex;min-height:44px;align-items:center;justify-content:center;border:1px solid transparent;border-radius:10px;padding:10px 16px;font-size:14px;font-weight:650;line-height:1.5;text-decoration:none;cursor:pointer;text-align:center;}
.public-page .primary, .public-page .claim, .public-page .btn.primary {width:100%;background:#2563eb;color:#fff;}
.public-page .primary:hover, .public-page .claim:hover {background:#1d4ed8;text-decoration:none;}
.public-page .secondary, .public-page .btn {background:#fff;border-color:#cbd5e1;color:#334155;}
.public-page .secondary:hover, .public-page .btn:hover {background:#f8fafc;text-decoration:none;}
.public-page .secondary.strong {background:#2563eb;border-color:#2563eb;color:#fff;}
.public-page [hidden] {display:none!important;}
.public-page .optional-fields {margin:4px 0 20px;}
.public-page .optional-fields summary {color:#64748b;font-size:13px;cursor:pointer;padding:4px 0;}
.public-page .optional-fields .field {margin-top:14px;}
.public-page .privacy, .public-page .note, .public-page .footer {font-size:12px;color:#64748b;line-height:1.7;}
.public-page .privacy {margin-top:12px;}
.public-page .footer {margin-top:28px;text-align:center;}
.public-page .required {color:#dc2626;margin-left:3px;}
.public-page .earn-entry {margin-top:24px;border-top:1px solid #e2e8f0;padding-top:20px;}
.public-page .earn-entry strong {display:block;font-size:15px;}
.public-page .earn-entry p {font-size:13px;color:#64748b;margin:6px 0 14px;line-height:1.7;}
.public-page .earn-entry a {display:inline-flex;font-size:14px;font-weight:650;align-items:center;min-height:44px;}
.public-page .inviter {font-size:16px;font-weight:600;color:#334155;margin-bottom:10px;}
.public-page .trial-benefit {margin-top:24px;}
.public-page .success {text-align:left;}
.public-page .success-icon {width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#dcfce7;color:#15803d;font-size:23px;margin-bottom:16px;}
.public-page .success p {color:#64748b;font-size:14px;line-height:1.8;margin:10px 0;}
.public-page .highlight {color:#2563eb;font-weight:650;}
.public-page .matched {margin-bottom:22px;}
.public-page .matched .hint {color:#64748b;font-size:13px;}
.public-page .matched .name {font-size:23px;font-weight:750;margin:4px 0;}
.public-page .poster-workspace {display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:28px;align-items:start;}
.public-page .poster {padding:8px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:12px;min-width:0;}
.public-page .poster img {display:block;width:100%;height:auto;border-radius:6px;}
.public-page .poster-empty {min-height:340px;display:flex;align-items:center;justify-content:center;padding:20px;background:#eff6ff;color:#475569;border-radius:6px;font-size:14px;}
.public-page .poster-controls {display:grid;gap:16px;min-width:0;}
.public-page .poster-controls h3 {font-size:17px;margin:0;}
.public-page .actions {display:flex;gap:10px;flex-wrap:wrap;margin:0;}
.public-page .poster-controls .actions>* {flex:1;}
.public-page .url label {display:block;color:#64748b;font-size:13px;margin-bottom:6px;}
.public-page .url input {font-size:13px;background:#f8fafc;}
.public-page .note {margin:0;}
.public-page .reset-link {font-size:13px;min-height:44px;display:inline-flex;align-items:center;}
.public-page .canvas {position:fixed;left:-99999px;top:-99999px;width:1122px;height:1402px;}
.public-page .matched-state .public-layout {grid-template-columns:1fr;gap:20px;}
.public-page .matched-state .public-intro {display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center;}
.public-page .matched-state .hero {padding:0;}
.public-page .matched-state .hero h1 {font-size:28px;margin-bottom:8px;}
.public-page .matched-state .hero .tag, .public-page .matched-state .steps {display:none;}
.public-page .matched-state .benefits {margin:0;}
.campaign-page .campaign-head {margin:0 0 24px;}
.campaign-page h1 {font-size:30px;line-height:1.3;margin:0 0 8px;}
.campaign-page .campaign-head p {margin:0;color:#64748b;}
.campaign-page .campaign-layout {display:grid;grid-template-columns:minmax(0,410px) minmax(0,1fr);gap:36px;align-items:start;}
.campaign-page .campaign-preview {min-width:0;background:#edf2f7;border:1px solid #e2e8f0;padding:10px;border-radius:14px;}
.campaign-page #poster {display:none;width:100%;height:auto;border-radius:6px;}
.campaign-page #status {padding:16px;color:#475569;font-size:14px;margin:0;}
.campaign-page .campaign-info h2 {font-size:24px;line-height:1.4;margin:0 0 12px;}
.campaign-page .campaign-info p {color:#64748b;margin:12px 0;font-size:14px;line-height:1.8;}
.campaign-page .campaign-info .benefits {margin:18px 0 24px;}
.campaign-page .campaign-info .actions {margin-top:12px;}
.campaign-page .campaign-info .actions>* {flex:1;}
.campaign-page .campaign-info small {display:block;color:#64748b;font-size:12px;line-height:1.8;margin-top:18px;}
.campaign-page canvas {display:none;}
/* Account forms use the same sizing and focus treatment, independent of app navigation. */
.auth-page.login-page {display:block;padding:30px 24px;background:#f5f7fb;}
.auth-shell {max-width:1050px;min-height:calc(100vh - 60px);margin:auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,440px);gap:70px;align-items:center;}
.auth-intro .public-brand {margin-bottom:40px;}
.auth-intro h2 {font-size:38px;line-height:1.35;letter-spacing:-.03em;margin:0 0 18px;}
.auth-intro>p {max-width:370px;margin:0;color:#64748b;font-size:15px;line-height:1.8;}
.auth-features {display:grid;gap:14px;margin:30px 0 0;padding:0;list-style:none;color:#475569;}
.auth-features li {display:flex;align-items:center;gap:10px;}
.auth-features li::before {content:"✓";color:#2563eb;background:#dbeafe;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:12px;font-weight:750;}
.auth-page .login-card {width:100%;max-width:none;margin:0;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:32px;box-shadow:0 8px 32px #0f172a05;}
.auth-page .login-card h1 {font-size:25px;line-height:1.4;margin:0 0 8px;}
.auth-page .login-card>p {color:#64748b;margin:0 0 24px;line-height:1.7;}
.auth-page .stack-form {gap:18px;}
.auth-page input:not([type=checkbox]):not([type=radio]), .auth-page select {min-height:46px;padding:11px 12px;border-radius:10px;border:1px solid #cbd5e1;font-size:16px;}
.auth-page input[type=radio], .auth-page input[type=checkbox] {width:18px;height:18px;accent-color:#2563eb;}
.auth-page .button {min-height:44px;line-height:1.5;border-radius:10px;padding:10px 14px;}
.auth-page .button.primary {background:#2563eb;border-color:#2563eb;color:#fff;}
.auth-page .button.primary:hover {background:#1d4ed8;}
.auth-page .login-register-box, .auth-page .login-note {border-color:#e2e8f0;font-size:13px;color:#64748b;}
.auth-page .login-register-box .button {background:#fff;color:#334155;}
.auth-page .login-back {font-size:13px;margin-bottom:24px;}
.auth-page .section-eyebrow {margin-bottom:8px;}
.auth-page .alert {border-radius:10px;font-size:13px;line-height:1.7;}
.auth-page .role-options {grid-template-columns:1fr 1fr;}
.auth-page .role-option {min-height:46px;padding:10px 12px;background:#fff;border-color:#cbd5e1;border-radius:10px;}
.auth-page .role-option:has(input:checked) {border-color:#2563eb;background:#eff6ff;}
.auth-page .registration-extra-box {padding:14px;background:#f8fafc;border-color:#e2e8f0;border-radius:10px;}
.auth-page .registration-extra-box .field-title-row {flex-wrap:wrap;}
.auth-page .registration-extra-box .button {min-height:36px;font-size:12px;}
.auth-page .stack-form small, .auth-page .login-note {font-size:12px;line-height:1.8;}
.auth-page .register-shell {max-width:1060px;grid-template-columns:minmax(0,1fr) minmax(0,540px);align-items:start;padding:24px 0;}
.auth-page .register-shell .auth-intro {padding-top:50px;position:sticky;top:50px;}
/* Invitation center belongs to the authenticated shell. */
.invite-wrap {max-width:1120px;margin:0 auto;color:#0f172a;}
.invite-wrap .invite-hero {display:flex;gap:20px;justify-content:space-between;align-items:start;padding:0;border:0;background:none;margin-bottom:24px;}
.invite-wrap .invite-title {font-size:28px;line-height:1.3;margin:0 0 10px;letter-spacing:-.02em;}
.invite-wrap .invite-sub {font-size:14px;line-height:1.7;color:#64748b;margin:0;max-width:700px;}
.invite-wrap .invite-card {min-width:0;border:1px solid #e2e8f0;border-radius:14px;background:#fff;padding:22px;margin-bottom:20px;}
.invite-wrap .invite-card h2 {font-size:18px;line-height:1.4;margin:0 0 14px;}
.invite-wrap .campaign-entry {display:flex;align-items:center;justify-content:space-between;gap:18px;background:#eff6ff;border-color:#dbeafe;}
.invite-wrap .campaign-entry h2 {font-size:16px;margin:0 0 6px;color:#1e40af;}
.invite-wrap .campaign-entry p {font-size:13px;line-height:1.6;color:#64748b;margin:0;}
.invite-wrap .invite-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 24px;}
.invite-wrap .invite-stat {padding:16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;color:#64748b;font-size:12px;}
.invite-wrap .invite-stat strong {display:block;color:#0f172a;font-size:24px;font-weight:750;margin-bottom:4px;}
.invite-wrap .invite-stat:last-child strong {color:#2563eb;}
.invite-wrap .share-preview {padding:0;margin:0;background:none;border:0;}
.invite-wrap .share-preview-title {font-size:18px;font-weight:700;}
.invite-wrap .share-preview-summary {font-size:13px;color:#64748b;line-height:1.7;margin-top:7px;}
.invite-wrap .poster-layout {display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:28px;align-items:start;margin-top:20px;}
.invite-wrap .poster-box {min-width:0;padding:8px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:12px;}
.invite-wrap .poster-box img {display:block;width:100%;height:auto;border-radius:6px;}
.invite-wrap .poster-tip {font-size:12px;color:#64748b;line-height:1.7;margin:10px 4px 2px;}
.invite-wrap .poster-actions {min-width:0;}
.invite-wrap .poster-actions h3 {font-size:18px;margin:0 0 10px;}
.invite-wrap .poster-actions p {font-size:13px;color:#64748b;line-height:1.7;margin:0 0 14px;}
.invite-wrap .poster-action-stack, .invite-wrap .share-copy {display:flex;gap:10px;flex-wrap:wrap;margin:16px 0;}
.invite-wrap .invite-btn {display:inline-flex;align-items:center;justify-content:center;min-height:44px;line-height:1.5;padding:10px 16px;border:1px solid #2563eb;border-radius:10px;background:#2563eb;color:#fff;font-size:14px;font-weight:650;text-decoration:none;cursor:pointer;}
.invite-wrap .invite-btn:hover {background:#1d4ed8;color:#fff;text-decoration:none;}
.invite-wrap .invite-btn.secondary {color:#334155;background:#fff;border-color:#cbd5e1;}
.invite-wrap .invite-btn.secondary:hover {background:#f8fafc;}
.invite-wrap .invite-btn.small {padding:8px 12px;white-space:nowrap;}
.invite-wrap .invite-url input {display:block;width:100%;min-width:0;min-height:44px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;color:#475569;background:#f8fafc;font-size:13px;}
.invite-wrap .small-note {color:#64748b;font-size:12px;line-height:1.7;}
.invite-wrap .poster-empty {min-height:340px;display:flex;align-items:center;justify-content:center;padding:20px;background:#eff6ff;color:#475569;border-radius:6px;text-align:center;}
.invite-wrap .invite-rules {font-size:13px;line-height:1.8;margin:10px 0 0;padding-left:20px;color:#64748b;}
.invite-wrap .rule-details {margin-top:18px;padding-top:16px;border-top:1px solid #e2e8f0;}
.invite-wrap .rule-details summary {cursor:pointer;color:#64748b;font-size:13px;}
.invite-wrap .invite-table-wrap {width:100%;overflow:auto;-webkit-overflow-scrolling:touch;}
.invite-wrap .invite-table {width:100%;min-width:580px;border-collapse:collapse;font-size:13px;line-height:1.6;}
.invite-wrap .invite-table th, .invite-wrap .invite-table td {padding:12px;border-bottom:1px solid #edf2f7;text-align:left;vertical-align:middle;}
.invite-wrap .invite-table th {color:#64748b;background:#f8fafc;font-size:12px;font-weight:600;white-space:nowrap;}
.invite-wrap .invite-table td form {margin:0;}
.invite-wrap .invite-table td .invite-btn {font-size:12px;padding:8px 10px;}
.invite-wrap .badge-ok, .invite-wrap .badge-wait {display:inline-block;white-space:nowrap;border-radius:6px;padding:3px 7px;font-size:12px;}
.invite-wrap .badge-ok {background:#f0fdf4;color:#15803d;}
.invite-wrap .badge-wait {background:#fffbeb;color:#b45309;}
.poster-canvas {position:fixed;left:-99999px;top:-99999px;width:1122px;height:1402px;}
@media(max-width:800px) {
  .public-page .page {padding:18px 16px calc(24px + env(safe-area-inset-bottom));}
  .public-topbar {margin-bottom:20px;}
  .public-brand {font-size:16px;}
  .brand-symbol {width:32px;height:32px;font-size:17px;border-radius:9px;}
  .public-layout {grid-template-columns:1fr;gap:22px;max-width:540px;margin:auto;}
  .public-page .hero {padding:0;}
  .public-page .hero h1 {font-size:28px;margin-bottom:10px;}
  .public-page .hero p, .public-page .summary {font-size:13px;}
  .public-page .tag {margin-bottom:8px;font-size:11px;}
  .public-page .benefits {gap:10px;margin-top:16px;}
  .public-page .benefit {padding:12px;}
  .public-page .benefit strong {font-size:22px;}
  .public-page .steps {display:none;}
  .public-page .card {padding:22px 20px;}
  .public-page .card h2 {font-size:20px;}
  .public-page .sub {margin-bottom:20px;}
  .public-page .matched-state .public-intro {display:block;}
  .public-page .matched-state .public-layout {max-width:620px;gap:18px;}
  .public-page .matched-state .benefits {margin-top:14px;}
  .public-page .matched-state .hero h1 {font-size:25px;}
  .public-page .poster-workspace {grid-template-columns:1fr;gap:18px;}
  .public-page .poster-controls {grid-row:1;}
  .public-page .poster {max-width:380px;width:100%;margin:auto;}
  .public-page .poster-controls .actions {display:grid;grid-template-columns:1fr 1fr;}
  .public-page .poster-controls .primary {margin:0;}
  .campaign-page .campaign-layout {grid-template-columns:1fr;gap:22px;max-width:540px;margin:auto;}
  .campaign-page .campaign-info {grid-row:1;}
  .campaign-page .campaign-preview {max-width:400px;width:100%;margin:auto;}
  .campaign-page h1 {font-size:25px;}
  .campaign-page .campaign-info h2 {font-size:22px;}
  .campaign-page .campaign-info .benefits {margin:16px 0;}
  .campaign-page .campaign-info small {margin-top:14px;}
  .auth-page.login-page {padding:22px 16px;}
  .auth-shell, .auth-page .register-shell {display:block;max-width:520px;min-height:auto;padding:0;}
  .auth-intro .public-brand {margin-bottom:24px;}
  .auth-intro h2 {font-size:25px;margin-bottom:8px;}
  .auth-intro>p {font-size:13px;margin-bottom:24px;}
  .auth-features {display:none;}
  .auth-page .login-card {padding:26px 22px;}
  .auth-page .register-shell .auth-intro {position:static;padding:0;}
  .auth-page .register-shell .auth-intro h2, .auth-page .register-shell .auth-intro>p {display:none;}
  .invite-wrap .invite-hero {display:block;margin-bottom:18px;}
  .invite-wrap .invite-title {font-size:24px;}
  .invite-wrap .invite-sub {font-size:13px;}
  .invite-wrap .invite-card {padding:18px;margin-bottom:16px;}
  .invite-wrap .campaign-entry {display:block;}
  .invite-wrap .campaign-entry .invite-btn {margin-top:12px;}
  .invite-wrap .invite-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:20px;}
  .invite-wrap .invite-stat {padding:12px;}
  .invite-wrap .poster-layout {grid-template-columns:1fr;gap:18px;margin-top:16px;}
  .invite-wrap .poster-actions {grid-row:1;}
  .invite-wrap .poster-box {width:100%;max-width:380px;margin:auto;}
  .invite-wrap .poster-action-stack {display:grid;grid-template-columns:1fr 1fr;}
  .invite-wrap .share-copy {display:grid;grid-template-columns:1fr 1fr;}
  .invite-wrap .share-copy>:last-child {grid-column:1/-1;}
}
@media(max-width:380px) {
  .public-page .page {padding-left:12px;padding-right:12px;}
  .public-page .card {padding:20px 16px;}
  .public-topbar {gap:10px;}
  .public-topbar .top-link {font-size:12px;}
  .public-page .hero h1 {font-size:25px;}
  .auth-page .login-card {padding:22px 18px;}
  .invite-wrap .poster-action-stack {grid-template-columns:1fr;}
}
@media(prefers-reduced-motion:reduce) {
  .public-page *, .auth-page *, .invite-wrap * {scroll-behavior:auto!important;transition:none!important;}
}

