  .pwa-modal{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center;
    background:rgba(6,4,12,.6);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);
    opacity:0;transition:opacity .22s ease;}
  .pwa-modal.is-open{opacity:1;}
  .pwa-modal.hidden{display:none!important;} /* beat this component's own display:flex when closed */
  @media (min-width:480px){.pwa-modal{align-items:center;padding:1rem;}}
  .pwa-sheet{position:relative;width:100%;max-width:440px;background:linear-gradient(180deg,var(--paper-2),var(--paper));
    color:var(--ink);border:1px solid var(--rule);border-bottom:0;border-radius:20px 20px 0 0;
    padding:1.6rem 1.35rem calc(1.35rem + env(safe-area-inset-bottom));overflow:hidden;
    box-shadow:0 -24px 70px -22px rgba(0,0,0,.7);
    transform:translateY(24px);opacity:.6;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .28s ease;}
  /* glowing dripping-ember top rail */
  .pwa-sheet::before{content:'';position:absolute;top:0;inset-inline:0;height:3px;pointer-events:none;
    background:linear-gradient(90deg,transparent,var(--pumpkin),var(--blood),var(--pumpkin),transparent);
    box-shadow:0 0 14px 1px color-mix(in srgb,var(--pumpkin) 60%,transparent);opacity:.9;}
  .pwa-modal.is-open .pwa-sheet{transform:translateY(0);opacity:1;}
  @media (min-width:480px){.pwa-sheet{border-bottom:1px solid var(--rule);border-radius:20px;transform:translateY(8px) scale(.97);}}
  .pwa-sheet__grip{display:block;width:40px;height:4px;border-radius:99px;background:var(--pumpkin);opacity:.5;margin:-.4rem auto 1rem;}
  @media (min-width:480px){.pwa-sheet__grip{display:none;}}
  .pwa-x{position:absolute;top:.7rem;inset-inline-end:.8rem;width:34px;height:34px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;font-size:1.35rem;line-height:1;z-index:2;
    color:var(--ink-soft);background:transparent;transition:background .15s ease,color .15s ease;}
  .pwa-x:hover{background:color-mix(in srgb,var(--pumpkin) 18%,transparent);color:var(--pumpkin);}
  .pwa-brand{display:flex;align-items:center;gap:.9rem;margin-bottom:1rem;padding-inline-end:1.5rem;}
  .pwa-brand__icon{border-radius:14px;border:1px solid var(--rule);flex:0 0 auto;object-fit:contain;background:var(--paper);
    box-shadow:0 0 18px -4px color-mix(in srgb,var(--pumpkin) 55%,transparent);}
  .pwa-brand__title{font-size:1.2rem;font-weight:800;line-height:1.1;color:var(--ink);margin:0;}
  .pwa-brand__desc{font-size:.83rem;line-height:1.45;color:var(--ink-soft);margin:.25rem 0 0;}
  .pwa-benefits{list-style:none;margin:0 0 1.25rem;padding:0;display:flex;flex-direction:column;gap:.5rem;}
  .pwa-benefits li{position:relative;padding-inline-start:1.75rem;font-size:.85rem;color:var(--ink-2);}
  .pwa-benefits li::before{content: none;position:absolute;inset-inline-start:0;top:-.05rem;font-size:.9rem;}
  .pwa-cta{width:100%;justify-content:center;}
  .pwa-panel__title{font-weight:800;font-size:.98rem;margin:0 0 .4rem;color:var(--ink);}
  .pwa-panel__desc{font-size:.85rem;line-height:1.5;color:var(--ink-soft);margin:0;}
  .pwa-steps{list-style:none;counter-reset:s;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem;}
  .pwa-steps li{display:flex;align-items:center;gap:.75rem;font-size:.88rem;line-height:1.35;color:var(--ink-2);
    counter-increment:s;background:var(--paper);border:1px solid var(--rule);border-radius:14px;padding:.7rem .85rem;}
  .pwa-steps__ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;
    color:var(--pumpkin);background:color-mix(in srgb,var(--pumpkin) 10%,var(--paper));
    border:1px solid color-mix(in srgb,var(--pumpkin) 40%,var(--rule));position:relative;}
  .pwa-steps__ic::after{content:counter(s);position:absolute;top:-6px;inset-inline-start:-6px;width:18px;height:18px;
    border-radius:50%;font-size:.65rem;font-weight:800;display:flex;align-items:center;justify-content:center;
    color:#1a0d05;background:var(--pumpkin);box-shadow:0 0 8px -1px color-mix(in srgb,var(--pumpkin) 70%,transparent);}
  .pwa-steps__txt strong{color:var(--ink);font-weight:800;}
  .pwa-note{font-size:.75rem;color:var(--ink-soft);margin:.75rem 0 0;text-align:center;}
  .pwa-later{display:block;width:100%;margin-top:1rem;padding:.6rem;font-size:.82rem;font-weight:700;
    color:var(--ink-soft);background:transparent;border-radius:12px;transition:color .15s ease;}
  .pwa-later:hover{color:var(--pumpkin);}
  .pwa-toast{position:fixed;inset-inline:0;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:130;
    display:flex;justify-content:center;padding:0 1rem;opacity:0;transform:translateY(12px);
    transition:opacity .3s ease,transform .3s ease;pointer-events:none;}
  .pwa-toast.is-open{opacity:1;transform:translateY(0);}
  .pwa-toast__card{display:flex;align-items:center;gap:.7rem;max-width:360px;width:100%;
    background:var(--paper);color:var(--ink);border:1px solid color-mix(in srgb,var(--pumpkin) 45%,var(--rule));border-radius:16px;
    padding:.75rem .9rem;box-shadow:0 20px 45px -18px rgba(0,0,0,.7);}
  .pwa-toast__card img{border-radius:10px;flex:0 0 auto;}
  .pwa-toast__title{margin:0;font-weight:800;font-size:.88rem;}
  .pwa-toast__body{margin:.1rem 0 0;font-size:.78rem;color:var(--ink-soft);}
  /* By day: an invitation card on bone paper, a candy-corn rail across the
     top and ink edges instead of glows. */
  html:not(.dark) .pwa-modal{background:rgba(47,29,64,.45)}
  html:not(.dark) .pwa-sheet{background:linear-gradient(180deg,var(--paper-2),var(--paper));
    border-color:#1f1714;box-shadow:0 -18px 50px -24px rgba(30,15,40,.55)}
  html:not(.dark) .pwa-sheet::before{height:5px;box-shadow:none;opacity:1;
    background:linear-gradient(90deg,#f2b432 0 33.3%,#ec8a2c 33.3% 66.6%,#fdf8ee 66.6%);border-bottom:1px solid #1f1714}
  html:not(.dark) .pwa-brand__icon{box-shadow:2px 2px 0 0 #1f1714;border-color:#1f1714}
  html:not(.dark) .pwa-steps li{background:var(--paper-2);border-color:rgba(31,23,20,.22)}
  html:not(.dark) .pwa-steps__ic::after{color:#1f1714;background:#f2b432;box-shadow:0 0 0 1px #1f1714}
  html:not(.dark) .pwa-toast__card{background:var(--paper-2);border-color:#1f1714;box-shadow:4px 4px 0 -1px rgba(31,23,20,.85)}
