/* Commercial pages: registration portal, owner billing, operator console.
   Shared rules first (billing.html and admin.html depend on them), then the portal. */
body{margin:0;background:var(--paper,#f7f6f2);color:var(--ink,#182c29);font-family:var(--font,sans-serif)}
.commercial{max-width:1120px;margin:auto;padding:28px 20px 64px}
.commercial header,.commercial footer{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:20px 0}
.commercial .hero{max-width:740px;margin:36px 0}
.commercial h1{font-size:clamp(1.8rem,5vw,3.2rem);line-height:1.5}
.commercial .plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:24px 0}
.commercial .card{padding:24px}
.commercial .price{font-size:2rem;font-weight:700}
.commercial .stack{display:grid;gap:16px}
.commercial form{max-width:720px;margin:24px 0}
.commercial .field{width:100%;box-sizing:border-box}
.commercial .pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.commercial ul{padding-inline-start:20px}
.commercial li{margin:10px 0}
.commercial .checks{display:flex;gap:10px;align-items:flex-start}
.commercial .wide{max-width:none}
.commercial .table-wrap{overflow:auto}
.commercial table{min-width:640px;width:100%;border-collapse:collapse}
.commercial th,.commercial td{text-align:right;padding:12px;border-bottom:1px solid var(--line,#ddd)}
.commercial [hidden]{display:none!important}
.commercial .code{direction:ltr;display:inline-block;overflow-wrap:anywhere}
.commercial .muted{color:var(--muted,#667875)}
.commercial .actions{display:flex;gap:12px;flex-wrap:wrap}
.commercial .private-link{overflow-wrap:anywhere}
.commercial small{display:block;line-height:1.8}
.commercial .banner{border-inline-start:4px solid var(--brass,#ad8f5d);padding:20px}
.commercial .btn[disabled]{opacity:.55;cursor:not-allowed}
@media(max-width:760px){.commercial .plans,.commercial .pair{grid-template-columns:1fr}.commercial{padding:16px}.commercial h1{font-size:1.9rem}.commercial .card{padding:20px}.commercial header{align-items:flex-start}}

/* ── registration portal ── */
#portal{max-width:880px;outline:none}
#portal .portal-loading{padding:40px 0;color:var(--ink-2)}
.portal-top{border-bottom:1px solid var(--line)}
.portal-brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--ink)}
.portal-brand strong{display:block;line-height:1.3}
.portal-brand small{color:var(--ink-3);font-size:.78rem;line-height:1.4}
.portal-mark{width:36px;height:36px;flex:none;border-radius:10px;background:var(--green);background-image:linear-gradient(135deg,transparent 46%,var(--brass) 46% 54%,transparent 54%)}
.portal-hero{margin:28px 0 20px;max-width:640px}
.portal-hero h1{font-size:clamp(1.55rem,4.2vw,2.3rem);line-height:1.35;margin:4px 0 10px}
.portal-hero p:not(.portal-eyebrow){color:var(--ink-2)}
.portal-eyebrow{color:var(--brass);font-weight:700;font-size:.85rem}
.portal-campaign{display:grid;gap:4px;margin:0 0 18px;padding:14px 16px;border-radius:var(--radius);background:var(--brass-50);border:1px solid color-mix(in srgb,var(--brass) 30%,transparent);color:var(--ink)}
.portal-campaign small{color:var(--ink-2)}
#portal .portal-form{max-width:none;margin:0;padding:0;overflow:hidden}
.portal-steps{list-style:none;margin:0;padding:14px 18px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;background:var(--surface-2);border-bottom:1px solid var(--line);counter-reset:s}
.portal-steps li{margin:0;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:.8rem;font-weight:600;color:var(--ink-3);text-align:center;min-width:0}
.portal-steps li .num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;border:1.5px solid var(--line-strong);background:var(--surface);font-size:.85rem}
.portal-steps li.done{color:var(--green)}
.portal-steps li.done .num{background:var(--green-50);border-color:var(--green);color:var(--green)}
.portal-steps li[aria-current] {color:var(--ink)}
.portal-steps li[aria-current] .num{background:var(--green);border-color:var(--green);color:#fff}
.portal-step{padding:22px 22px 6px}
.portal-fieldset{border:0;margin:0;padding:0;min-width:0;display:grid;gap:16px}
.portal-fieldset legend{padding:0;margin-bottom:6px}
.portal-fieldset legend h2,.portal-fieldset>h2{font-size:1.2rem}
.portal-plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:12px}
.portal-plan{position:relative;display:grid;gap:6px;align-content:start;padding:16px;border:1.5px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}
.portal-plan input{position:absolute;inset-inline-end:14px;top:16px;width:20px;height:20px;accent-color:var(--green);margin:0}
.portal-plan:hover{border-color:var(--ink-3)}
.portal-plan:has(input:checked){border-color:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 18%,transparent);background:color-mix(in srgb,var(--green-50) 45%,var(--surface))}
.portal-plan:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--green) 45%,transparent);outline-offset:2px}
.portal-plan.off{cursor:not-allowed;opacity:.72;background:var(--surface-2)}
.portal-plans.static .portal-plan{cursor:default}
.portal-plan .badge{justify-self:start}
.portal-plan-name{font-weight:700;font-size:1.05rem;padding-inline-end:28px}
.portal-price{font-size:1.5rem;font-weight:700;line-height:1.3}
.portal-price small{display:inline;font-size:.8rem;font-weight:500;color:var(--ink-2)}
.portal-renew{font-size:.86rem;color:var(--brass);font-weight:600}
.portal-limits{font-size:.86rem;color:var(--ink-2)}
#portal .portal-feat{margin:4px 0 0;padding-inline-start:18px;font-size:.86rem;color:var(--ink-2)}
#portal .portal-feat li{margin:2px 0}
.portal-slug{display:flex;align-items:stretch;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}
.portal-slug:focus-within{outline:3px solid color-mix(in srgb,var(--green) 45%,transparent);outline-offset:2px}
.portal-slug .field{border:0;border-radius:0;min-width:0;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;text-align:left}
.portal-slug .field:focus-visible{outline:0}
.portal-slug .field[aria-invalid="true"]{background:var(--bad-50)}
.portal-suffix{display:flex;align-items:center;padding:0 12px;background:var(--surface-2);color:var(--ink-2);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem;border-inline-start:1px solid var(--line);white-space:nowrap;max-width:55%;overflow:hidden;text-overflow:ellipsis}
.portal-address{padding:12px 14px;border-radius:var(--radius-sm);background:var(--green-50);color:var(--green);font-weight:600;overflow-wrap:anywhere}
.portal-address .code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700}
.portal-summary{margin:0;display:grid;border:1px solid var(--line);border-radius:var(--radius-sm)}
.portal-summary>div{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border-top:1px solid var(--line)}
.portal-summary>div:first-child{border-top:0}
.portal-summary dt{color:var(--ink-3);font-size:.86rem;font-weight:600}
.portal-summary dd{margin:0;overflow-wrap:anywhere}
.portal-next{display:grid;gap:10px;padding:16px;border-radius:var(--radius-sm);background:var(--surface-2)}
.portal-next h2,.portal-next h3{font-size:1rem}
#portal .portal-next ol{margin:0;padding-inline-start:22px;display:grid;gap:6px}
#portal .portal-next li{margin:0}
.portal-trial{font-weight:700;color:var(--green)}
.portal-policy{font-weight:700;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--brass) 35%,transparent);background:var(--brass-50)}
.portal-check{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.portal-check input{width:20px;height:20px;flex:none;margin-top:3px;accent-color:var(--green)}
.portal-form .notice{margin:12px 22px 0}
.portal-nav{display:flex;justify-content:space-between;gap:10px;padding:18px 22px 22px}
.portal-nav .btn{min-width:120px}
.portal-closed{display:grid;gap:12px}
.portal-list{margin:0;padding-inline-start:20px}
.portal-ref{margin-top:28px;display:grid;gap:10px}
.portal-ref h2{font-size:1.05rem}
.portal-actions{display:flex;gap:10px;flex-wrap:wrap}
.portal-done{display:grid;gap:14px;margin-top:28px}
.portal-done h1{font-size:clamp(1.4rem,4vw,2rem);outline:none}
.portal-done .badge{justify-self:start}
.portal-fail{padding:40px 0;display:grid;gap:12px;justify-items:start}
.portal-foot{border-top:1px solid var(--line);margin-top:28px;font-size:.88rem}
@media(max-width:560px){
  .portal-steps{padding:12px 8px;gap:2px}
  .portal-steps li{font-size:.7rem}
  .portal-step{padding:18px 16px 4px}
  .portal-form .notice{margin:12px 16px 0}
  .portal-nav{padding:16px}
  .portal-nav .btn{flex:1;min-width:0}
  .portal-summary>div{grid-template-columns:minmax(0,1fr) auto}
  .portal-summary dt{grid-column:1/-1}
  .portal-top .btn{padding:0 10px}
}
