:root{color-scheme:light;--bg:#f3f6f4;--ink:#14201a;--muted:#4d5c55;--accent:#1f6b4a;--panel:#ffffff;--line:#d5e0da;--danger:#9b1c1c;--font:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;--sans:"Avenir Next","Segoe UI",sans-serif}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:radial-gradient(circle at top left,rgba(31,107,74,.12),transparent 40%),linear-gradient(160deg,#eef5f1 0,var(--bg) 45%,#e7eee9 100%);color:var(--ink);font-family:var(--sans)}body{min-height:100vh}a{color:var(--accent)}main.auth-shell{min-height:100vh;display:grid;place-items:center;padding:2rem 1rem}.brand{font-family:var(--font);font-size:clamp(2.5rem,6vw,4rem);line-height:.95;margin:0 0 .75rem;letter-spacing:-.03em}.panel{width:min(420px,100%);background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);border-radius:18px;padding:1.5rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lede{margin:0 0 1.25rem;color:var(--muted)}label{display:grid;grid-gap:.35rem;gap:.35rem;margin-bottom:.9rem;font-size:.92rem}input{width:100%;border:1px solid var(--line);border-radius:10px;padding:.7rem .8rem;font:inherit;background:#fff}.button,button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;background:var(--accent);color:#fff;font:inherit;font-weight:600;padding:.75rem 1.1rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.button.secondary,button.secondary{background:transparent;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 40%,white)}.stack{display:grid;grid-gap:.75rem;gap:.75rem}.error{color:var(--danger);margin:0 0 .75rem}.error,.muted{font-size:.92rem}.muted{color:var(--muted)}.public-shell{min-height:100vh;display:grid;place-items:center;padding:1.25rem}.public-card{width:min(420px,100%);background:color-mix(in srgb,var(--panel) 94%,transparent);border:1px solid var(--line);border-radius:20px;padding:1.5rem 1.25rem 1.75rem;overflow-wrap:anywhere;word-break:break-word}.public-photo-wrap{display:grid;place-items:center;margin-bottom:1rem}.public-photo,.public-photo-fallback{width:96px;height:96px;border-radius:50%;object-fit:cover}.public-photo-fallback{display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 18%,white);color:var(--accent);font-family:var(--font);font-size:2rem}.public-name{margin:0 0 .35rem;font-family:var(--font);font-size:clamp(1.8rem,7vw,2.4rem);line-height:1.05;letter-spacing:-.03em}.public-meta{margin:.15rem 0;color:var(--muted)}.public-summary{margin:.9rem 0 0;line-height:1.45}.public-actions{display:grid;grid-gap:.65rem;gap:.65rem;margin-top:1.35rem}.public-action{display:block;text-align:center;text-decoration:none;border-radius:999px;padding:.8rem 1rem;background:var(--accent);color:#fff;font-weight:600}.public-action:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,white);outline-offset:2px}.public-action-secondary{width:100%;border:1px solid color-mix(in srgb,var(--accent) 40%,white);background:transparent;color:var(--accent);cursor:pointer;font:inherit}.public-action-secondary:disabled{opacity:.65;cursor:wait}.public-vcard{margin-top:1.25rem;display:grid;grid-gap:.45rem;gap:.45rem}.public-vcard-hint{margin:0;text-align:center}button.linkish{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--accent);font:inherit;text-decoration:underline;cursor:pointer;padding:0}.card-row-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.55rem}.qr-dialog{width:min(360px,calc(100vw - 2rem));max-width:100%;border:1px solid var(--line);border-radius:18px;padding:0;background:var(--panel);color:var(--ink)}.qr-dialog::-webkit-backdrop{background:rgb(20 32 26/45%)}.qr-dialog::backdrop{background:rgb(20 32 26/45%)}.qr-dialog-body{padding:1.15rem 1.1rem 1.25rem}.qr-dialog-title{margin:0 0 .35rem;font-family:var(--font);font-size:1.35rem;line-height:1.15}.qr-preview{display:block;width:min(240px,100%);height:auto;margin:.75rem auto 1rem;background:#fff;image-rendering:pixelated}