/* Billing surfaces and the lock chrome. Shipped only when a Web Billing key was
   inlined at build time: a keyless build has neither this file nor a link to it.
   Same tokens as the rest of the mat: blue ground, chalk, red for a warning. */
.premium-card{border:1px solid var(--line);border-top:4px solid var(--accent);background:var(--paper);padding:clamp(16px,3vw,26px);margin:0 0 20px}
.premium-card h2{margin:0 0 10px;font-family:var(--heading);font-size:1.3rem}
.premium-card h3{margin:22px 0 8px;padding-top:14px;border-top:1px solid var(--line);font-size:1.05rem}
.plan-perks{margin:0;padding-left:1.1rem}
.plan-perks li{margin:7px 0;line-height:1.55}
.plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:14px;margin:6px 0 16px}
.plan-card{display:flex;flex-direction:column;justify-content:space-between;gap:14px;min-width:0;border:1px solid var(--line);background:var(--raised);padding:18px}
.plan-card.featured{border-color:var(--accent)}
.plan-card-title{font:700 1.05rem var(--heading)}
.plan-card-price{font:600 1.6rem var(--mono);letter-spacing:-.01em;overflow-wrap:anywhere}
.plan-card-price span{font:400 .85rem var(--sans);color:var(--muted)}
.plan-card .button{min-height:44px}
.plan-active{display:grid;gap:8px;border:1px solid var(--accent);border-left:6px solid var(--accent);background:var(--raised);padding:15px 17px}
.plan-active a{color:inherit}
.plan-loading,.plan-outcome{margin:0;color:var(--muted);font-size:.9rem}
.plan-error{margin:0;border:1px solid var(--warn);border-left:6px solid var(--warn);background:var(--raised);color:var(--warn-text);padding:12px 14px;font-size:.9rem}
.plan-fineprint{margin:14px 0 0;color:var(--muted);font-size:.84rem;line-height:1.65}
.access-code{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
.access-code-value{display:block;overflow-wrap:anywhere;border:1px dashed var(--muted);background:var(--bg);padding:12px;font:600 .9rem var(--mono)}
.restore-panel{max-width:640px}
.restore-label{display:block;margin-bottom:6px;font-weight:600}
.restore-input{width:100%;min-height:44px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--ink);padding:10px;font:inherit;font-family:var(--mono);font-size:.9rem}
.restore-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.restore-ok{border:1px solid var(--accent);border-left:6px solid var(--accent);background:var(--raised);padding:12px 14px;font-size:.9rem}
.restore-warn{border:1px solid var(--warn);border-left:6px solid var(--warn);background:var(--raised);color:var(--warn-text);padding:12px 14px;font-size:.9rem}
#restore-message{margin:14px 0 0}
#restore-message p{margin:0}
/* The lock, inside the app. Injected at runtime only when keyed. */
.lock-panel{display:grid;gap:14px;border:1px solid var(--line);border-left:6px solid var(--warn);background:var(--paper);padding:clamp(16px,3vw,24px);margin:0 0 20px}
.lock-panel h2{margin:0;font-family:var(--heading)}
.lock-panel .lock-cue{margin:0;color:var(--muted)}
.lock-panel .lock-actions{display:flex;flex-wrap:wrap;gap:10px}
.lock-panel .lock-actions .button{min-height:44px}
.lock-mark{display:inline-block;border:1px solid var(--warn);color:var(--warn-text);padding:1px 7px;font:600 .68rem var(--mono);letter-spacing:.08em;text-transform:uppercase;margin-left:6px;vertical-align:middle}
.lock-note{margin:8px 0 0;color:var(--muted);font-size:.84rem;line-height:1.55}
.lock-note a{color:inherit}
.premium-link{margin-left:2px}
@media(forced-colors:active){.plan-card,.lock-mark,.access-code-value,.plan-active,.restore-ok,.restore-warn,.plan-error,.lock-panel{border:1px solid CanvasText;background:Canvas;color:CanvasText}}
@media print{.plan-grid,.restore-panel,.lock-panel{display:none}}
.lock-poster{width:min(100%,480px);height:auto;aspect-ratio:4/3;object-fit:contain;background:var(--stage-bg);border:1px solid var(--line)}
.program-card.locked .card-link{color:var(--muted)}
