/* Public page and editor preview share normalized sizing and normal flow. */
.public-page{--bg-1:#030202;--bg-2:#2a2235;--bg-3:#160934;--accent:#f34949;color:#fff;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-family:var(--profile-font,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif);background-color:#160934;background-image:linear-gradient(180deg,#030202,#2a2235 53%,#160934);background-image:linear-gradient(180deg,var(--bg-1),var(--bg-2) 53%,var(--bg-3));min-height:100vh;min-height:100svh;-webkit-text-size-adjust:100%;text-size-adjust:100%}
.public-page *{box-sizing:border-box}
.public-page .profile{width:100%;max-width:600px;max-width:var(--profile-width,600px);margin:auto;padding:48px 24px 54px;padding:var(--profile-top,48px) var(--profile-side,24px) 54px;text-align:center;text-align:var(--profile-align,center)}
.public-page .profile>[data-profile-block]{min-width:0;max-width:100%;margin:0}
.public-page .profile{margin-left:var(--column-left,auto);margin-right:var(--column-right,auto)}
.public-page .profile>[data-profile-block]+[data-profile-block]{margin-top:22px;margin-top:var(--block-gap,22px)}
.public-page .location{display:inline-flex;max-width:100%;background:#000;border-radius:999px;padding:10px 20px;font-weight:700;line-height:1.4}
.public-page .profile-avatar{display:flex;justify-content:center;justify-content:var(--avatar-align,center)}
.public-page .avatar-presence{display:block;position:relative;flex:none;width:150px;width:var(--avatar-size,150px);max-width:100%;line-height:0}
.public-page .avatar-presence>.avatar-frame{width:100%}
.public-page .online-indicator{display:block;position:absolute;right:8%;bottom:8%;z-index:1;width:16px;height:16px;width:clamp(10px,calc(var(--avatar-size,150px) * .107),18px);height:clamp(10px,calc(var(--avatar-size,150px) * .107),18px);border:2px solid #151019;border-radius:50%;background:#46d982;box-shadow:0 0 5px rgba(70,217,130,.22);pointer-events:none}
.public-page .online-indicator[hidden]{display:none}
/* Only the decorative halo moves; the avatar and its sizing box stay still. */
.public-page .online-indicator::before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:inherit;background:rgba(70,217,130,.3);opacity:0;pointer-events:none;animation:online-halo 4s ease-out infinite}
.public-page .avatar-frame{display:block;position:relative;flex:none;width:150px;width:var(--avatar-size,150px);max-width:100%;margin:0;border:5px solid #f34949;border-color:var(--accent);border-radius:50%;padding:3px;background:#eae5df;line-height:0}
/* A square sizing box avoids WebKit's auto aspect-ratio/percentage-height
   interaction, including old engines. The image never determines frame size. */
.public-page .avatar-frame::before{content:"";display:block;padding-top:100%}
.public-page .avatar-frame>.crop-window{position:absolute;top:3px;right:3px;bottom:3px;left:3px;width:auto;height:auto}
/* A fixed clipping window keeps zoom/pan independent of layout and hit targets. */
.crop-window{display:block;width:100%;height:100%;overflow:hidden;border-radius:inherit;isolation:isolate}
.crop-picture{display:block;width:100%;height:100%}
.public-page .crop-window .crop-image,.photo-thumb .crop-image{display:block;width:100%;height:100%;max-width:none;object-fit:cover;border:0;padding:0;margin:0;border-radius:0;transition:none}
.public-page h1{font-family:inherit;font-family:var(--heading-font,inherit);font-size:32px;font-size:var(--name-size,32px);margin:0;font-weight:800;letter-spacing:-.04em;line-height:1.2;text-align:var(--name-align,center)}
/* The seal stays compact in the name line; its transparent tap target is 44px. */
.public-page .profile-verification{display:inline-block;position:relative;width:22px;height:22px;margin-left:7px;vertical-align:middle;line-height:0;letter-spacing:0;text-align:center}
.public-page .verification-trigger{display:flex;position:absolute;top:-11px;left:-11px;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;min-height:44px;margin:0;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;color:#fff;font:inherit;line-height:1;cursor:pointer;appearance:none;-webkit-appearance:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.public-page .verification-symbol{display:block;flex:none;width:26px;height:26px;fill:none;stroke:none;pointer-events:none}
.public-page .verification-symbol .verification-seal{fill:#3284f5;stroke:#64a2fa;stroke-width:.55;stroke-linejoin:round}
.public-page .verification-symbol .verification-check{fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.public-page .verification-trigger:focus{outline:2px solid #a4ceff;outline-offset:1px}
.public-page .verification-trigger:focus:not(:focus-visible){outline:none}
.public-page .verification-trigger:focus-visible{outline:2px solid #a4ceff;outline-offset:1px}
.public-page .verification-tooltip{display:block;position:fixed;top:0;left:0;z-index:30;max-width:calc(100vw - 16px);margin:0;padding:8px 9px;border:1px solid rgba(165,195,244,.2);border-radius:9px;background:#17243b;box-shadow:0 6px 18px rgba(0,0,0,.24);color:#fff;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:12px;font-style:normal;font-weight:600;line-height:1.35;letter-spacing:0;text-align:left;text-shadow:none;white-space:normal;word-wrap:normal;overflow-wrap:normal;cursor:default}
.public-page .verification-title{display:block;font:inherit;font-weight:650;white-space:normal;overflow-wrap:break-word}
.public-page .verification-description{display:block;margin-top:4px;font:inherit;font-size:11px;line-height:1.4;font-weight:400;color:#cbd7e9}
.public-page .verification-tooltip[data-compact="true"]{padding:7px 6px;font-size:11px}
.public-page .verification-tooltip[data-compact="true"] .verification-description{font-size:10.5px}
.public-page .verification-tooltip::before{content:"";position:absolute;top:var(--badge-tooltip-arrow,50%);left:-5px;width:8px;height:8px;border-bottom:1px solid rgba(165,195,244,.2);border-left:1px solid rgba(165,195,244,.2);background:#17243b;transform:translateY(-50%) rotate(45deg);pointer-events:none}
.public-page .verification-tooltip[data-placement="above"]::before{top:auto;left:auto;right:10px;bottom:-5px;transform:rotate(-45deg)}
.public-page .verification-tooltip[hidden]{display:none}
.public-page .bio{font-family:inherit;font-family:var(--bio-font,inherit);font-size:17px;font-size:var(--bio-size,17px);line-height:1.65;margin:0;white-space:pre-line;text-align:var(--bio-align,center)}
.public-page nav{display:flex;flex-wrap:wrap;justify-content:center;justify-content:var(--social-align,center);margin:0;gap:0}
.public-page .social{display:inline-flex;align-items:center;justify-content:center;flex:none;color:#fff;width:44px;height:44px;width:calc(var(--social-size,28px) + 16px);height:calc(var(--social-size,28px) + 16px);min-width:44px;min-height:44px;padding:8px;margin:0 9px;touch-action:manipulation;-webkit-tap-highlight-color:rgba(255,255,255,.12);text-decoration:none}
.public-page svg{display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.public-page .social svg{width:28px;height:28px;width:var(--social-size,28px);height:var(--social-size,28px);flex:none}
.public-page .social-heel{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:28px;font-size:var(--social-size,28px);line-height:1}
.public-page .social-monogram{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-family:Arial,Helvetica,sans-serif;font-size:20px;font-size:calc(var(--social-size,28px) * .72);font-weight:800;font-style:italic;letter-spacing:-1.5px;line-height:1}
.public-page .links{display:block}
.public-page .links>.link-card+.link-card{margin-top:16px;margin-top:var(--link-gap,16px)}
.public-page .link-card{display:flex;flex-wrap:wrap;align-items:center;min-height:96px;max-width:100%;padding:16px 24px;background:#eae8eb;border:1px solid #b6a4c7;border-radius:999px;color:#a40cfc;text-align:left;text-decoration:none;transition:transform .15s ease;gap:0;row-gap:12px}
.public-page .link-card>*+*{margin-left:18px}
.public-page .link-card{touch-action:manipulation;-webkit-tap-highlight-color:rgba(164,12,252,.12)}
/* Hover effects belong to mice, not the first tap on a touch-screen link. */
@media(hover:hover) and (pointer:fine){.public-page .link-card:hover{transform:translateY(-2px)}.public-page .link-card:active{transform:scale(.985)}}
.public-page .link-card img{display:block;width:56px;height:56px;max-width:100%;object-fit:cover;flex:0 1 auto;border-radius:50%;background:#d6c9db}
.public-page .link-picture{display:block;width:56px;height:56px;max-width:100%;flex:0 1 auto;line-height:0;border-radius:50%}
.public-page .link-card .link-copy{display:block;flex:1 1 80px;min-width:0;max-width:100%}
.public-page .link-copy>*{display:block}
.public-page .link-copy>*+*{margin-top:5px}
.public-page .link-card strong{font-size:18px;line-height:1.35}
.public-page .link-card small{color:#5c435e;line-height:1.5}
.public-page .link-card i{font-size:19px;font-style:normal;margin-left:18px;color:#937a9a;flex:none}
.public-page .link-card.enhanced{width:var(--card-width,100%);min-height:var(--card-height,96px);font-family:var(--card-font-family,inherit);background:var(--card-bg);color:var(--card-text);border:var(--card-border-width) solid var(--card-border);text-align:var(--card-align);box-shadow:none;margin-left:auto;margin-right:auto}
.public-page .link-card.enhanced.placement-left{margin-left:0;margin-right:auto}
.public-page .link-card.enhanced.placement-right{margin-left:auto;margin-right:0}
.public-page .link-card.enhanced.primary{box-shadow:0 8px 21px rgba(195,161,249,.4);box-shadow:0 8px 21px var(--card-glow-soft)}
.public-page .link-card.enhanced.shape-pill{border-radius:999px}
.public-page .link-card.enhanced.shape-rounded{border-radius:20px}
.public-page .link-card.enhanced.shape-square{border-radius:6px}
.public-page .link-card.enhanced img,.public-page .link-card.enhanced .link-picture{width:var(--card-image,56px);height:var(--card-image,56px)}
.public-page .link-card.enhanced .link-picture img{width:100%;height:100%}
.public-page .link-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 1 auto;width:var(--card-image,56px);height:var(--card-image,56px);max-width:100%;border-radius:50%;background:rgba(0,0,0,.035);color:inherit}
.public-page .link-icon svg{width:65%;height:65%;max-width:100%;flex:none}
.public-page .link-icon .social-heel{font-size:calc(var(--card-image,56px) * .7)}
.public-page .link-icon .social-monogram{font-size:calc(var(--card-image,56px) * .52)}
.public-page .link-card.image-shape-rounded .link-icon{border-radius:12px}
.public-page .link-card.image-shape-square .link-icon{border-radius:2px}
.public-page .link-card.enhanced.image-shape-circle .link-picture{border-radius:50%}
.public-page .link-card.enhanced.image-shape-rounded .link-picture{border-radius:12px}
.public-page .link-card.enhanced.image-shape-square .link-picture{border-radius:2px}
.public-page .link-card.enhanced .link-copy{text-align:var(--card-align)}
.public-page .link-card.enhanced strong{font-size:var(--card-font);font-weight:var(--card-weight);text-shadow:none}
.public-page .link-card.enhanced.primary strong{text-shadow:0 0 8px rgba(195,161,249,.5);text-shadow:0 0 8px var(--card-glow-text)}
.public-page .link-card.enhanced small{color:var(--card-subtitle);font-size:var(--card-subtitle-font,13px)}
.public-page .link-card.enhanced i{color:var(--card-text);opacity:.7}
.public-page .link-card.enhanced.image-right>.link-picture,.public-page .link-card.enhanced.image-right>img,.public-page .link-card.enhanced.image-right>.link-icon{order:2;margin-left:18px;max-width:calc(100% - 18px)}
.public-page .link-card.enhanced.image-right>.link-copy{order:1;margin-left:0}
.public-page .link-card.enhanced.image-right>i{order:3}
.public-page .link-card.enhanced.image-top{flex-direction:column;align-items:center;align-items:var(--card-content-align,center);row-gap:0}
.public-page .link-card.enhanced.image-top>*{margin-left:0}
.public-page .link-card.enhanced.image-top>*+*{margin-top:12px}
.public-page .link-card.enhanced.image-top>.link-copy{flex:none;width:100%}
.public-page .link-card.enhanced .link-badge{display:table;width:auto;width:fit-content;max-width:100%;font-family:inherit;font-size:9px;font-style:normal;font-weight:700;letter-spacing:.055em;line-height:1.4;padding:3px 7px;border-radius:5px;margin-left:0;margin-right:auto}
.public-page .link-card.enhanced.text-center .link-badge{margin-left:auto;margin-right:auto}
.public-page .link-card.enhanced.text-right .link-badge{margin-left:auto;margin-right:0}
.public-page .profile-footer{clear:both;margin-top:24px;text-align:var(--profile-align,center)}
.public-page .seo-note{margin:0;font-size:12px;color:#ffffff99;line-height:1.6}
.public-page .contact{display:inline-block;min-height:44px;padding:14px 8px;margin:2px 8px 0;color:#ffffffa8;font-size:12px;text-decoration:none}
.public-page .contact:hover{text-decoration:underline}
.public-page h1,.public-page .bio,.public-page .location,.public-page .link-card strong,.public-page .link-card small,.public-page .link-badge,.public-page .seo-note{word-wrap:break-word;overflow-wrap:break-word;overflow-wrap:anywhere}
.public-page a:focus{outline:3px solid #efb571;outline-offset:4px}
.public-page a:focus:not(:focus-visible){outline:none}
.public-page a:focus-visible{outline:3px solid #efb571;outline-offset:5px}
.public-page .loading{padding-top:40vh;padding-top:40svh;text-align:center}
.public-page .browser-help{margin-top:20px;font-size:13px;line-height:1.55;color:#e3ddeb;text-align:center}
.public-page .browser-help summary{min-height:44px;padding:12px 4px;cursor:pointer;list-style-position:inside}
.public-page .browser-help p{margin:8px 0;overflow-wrap:anywhere}
.public-page .browser-help-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.public-page .browser-help-actions a,.public-page .browser-help-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:1px solid #ffffff55;border-radius:12px;background:transparent;color:#fff;font:inherit;text-decoration:none;cursor:pointer;touch-action:manipulation}
.public-page .browser-help :focus-visible{outline:3px solid #efb571;outline-offset:3px}
.public-page .browser-copy-value{width:100%;max-width:100%;padding:10px;border:1px solid #ffffff55;border-radius:8px;background:#20172b;color:#fff;font:inherit;font-size:16px}
.public-page .browser-copy-value[hidden]{display:none}
.phone-screen.public-page{min-height:0}
/* Paint the glow once and animate only its opacity, not the CTA hitbox. */
.public-page .link-card.enhanced.animation-pulse{position:relative;isolation:isolate}
.public-page .link-card.enhanced.animation-pulse::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;border-radius:inherit;box-shadow:0 0 24px 3px rgba(195,161,249,.48);box-shadow:0 0 24px 3px var(--card-glow-high,rgba(195,161,249,.48));opacity:.16;pointer-events:none;animation:link-pulse 4.8s ease-in-out infinite}
.public-page .link-card.enhanced.animation-lift{animation:link-lift 4s ease-in-out infinite}
@keyframes online-halo{0%{transform:scale(.8);opacity:.6}75%,100%{transform:scale(1.65);opacity:0}}
@keyframes link-pulse{0%,100%{opacity:.16}50%{opacity:.6}}
@keyframes link-lift{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@media(prefers-reduced-motion:reduce){.public-page .link-card,.public-page .link-card.enhanced{animation:none!important;transition:none!important}.public-page .online-indicator::before,.public-page .link-card.enhanced.animation-pulse::after{display:none;animation:none!important}}
/* browser-opening-trial: only after an explicit attempt, no layout shift. */
.public-page .browser-help[data-browser-attempt]{position:fixed;z-index:20;box-sizing:border-box;bottom:12px;bottom:max(12px,env(safe-area-inset-bottom));left:12px;right:12px;width:auto;max-width:440px;max-height:70vh;overflow:auto;margin:0 auto;padding:18px;border:1px solid rgba(255,255,255,.25);border-radius:18px;background:#21192d;color:#fff;box-shadow:0 8px 32px rgba(0,0,0,.4);text-align:left}
.public-page .browser-help[data-browser-attempt] summary{padding-right:44px}
.public-page .browser-help[data-browser-attempt] .browser-help-close{position:absolute;top:6px;right:6px;width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:inherit;font-size:26px;cursor:pointer}
.public-page .browser-help[data-browser-attempt] .browser-help-actions a{background:#f2eafa;color:#251631}
.public-page .browser-help[data-browser-attempt] .browser-copy-value{box-sizing:border-box;width:100%;min-height:44px;margin-top:8px}
.public-page .browser-help-close[hidden]{display:none}
/* Optional photo-link blocks. Existing button/avatar layout remains unchanged. */
.public-page .link-card.enhanced.photo-card{display:block;padding:0;min-height:0;overflow:hidden;border-radius:18px;border-color:var(--card-border,#fff);border-width:var(--card-border-width,2px);background:transparent}
.public-page .photo-card-picture{display:block;position:relative;width:100%;height:0;padding-top:125%;overflow:hidden;border-radius:inherit}
.public-page .photo-card-picture>.crop-window,.public-page .photo-card-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0}
.public-page .link-card.enhanced.photo-card img{width:100%;height:100%;border-radius:0;object-fit:cover;background:#321f2c}
.public-page .photo-card-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:linear-gradient(145deg,#2f172b,#6c4b60);color:#ffffffa8;font-size:20px;letter-spacing:.08em}
.public-page .photo-card-placeholder svg{width:64px;height:64px;stroke-width:1.5}
/* Halloween 2026: an optional painted layer; saved sizing, content and fonts stay intact. */
.public-page .profile[data-season="halloween-2026"]{position:relative;isolation:isolate;color:#fff5e9}
.public-page .profile[data-season="halloween-2026"]>.profile-avatar+h1[data-profile-block="name"]{margin-top:calc(var(--block-gap,22px) + 16px)}
.public-page>.season-page-decoration{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.public-page .season-page-decoration *{pointer-events:none}
.public-page .season-corner-web{position:absolute;top:0;left:0;width:clamp(100px,30vw,170px);height:auto;stroke:#ed8b45;stroke-width:.85;opacity:.47}
.public-page .season-garland{position:absolute;top:0;right:-7px;width:64px;height:470px;max-height:94%;overflow:visible}
.public-page .season-garland-wire{stroke:#b65d2b;stroke-width:1.2;opacity:.7}
.public-page .season-bulb-halo{fill:#ff7c1e;stroke:none;opacity:.12}
.public-page .season-bulb-cap{fill:#814023;stroke:none}
.public-page .season-bulb-light{fill:#ff9c35;stroke:#ffcf7d;stroke-width:.7}
.public-page .profile[data-season="halloween-2026"]::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 55% 30% at 50% 25%,rgba(255,106,22,.22),transparent 76%),radial-gradient(ellipse 70% 26% at 50% 55%,rgba(238,101,24,.14),transparent 80%)}
.public-page [data-season="halloween-2026"] .avatar-frame{z-index:1;box-shadow:0 0 0 1px rgba(255,195,110,.4),0 0 34px rgba(255,103,22,.28)}
.public-page [data-season="halloween-2026"] .online-indicator{z-index:2}
.public-page [data-season="halloween-2026"] .season-avatar-decoration{display:block;position:absolute;inset:-14%;z-index:0;color:#ff9c49;line-height:0;pointer-events:none}
.public-page [data-season="halloween-2026"] .season-avatar-art{display:block;width:100%;height:100%;overflow:visible;stroke-width:.9;pointer-events:none}
.public-page [data-season="halloween-2026"] .season-orbit{stroke:currentColor;stroke-width:.65;stroke-dasharray:1 5;opacity:.32}
.public-page [data-season="halloween-2026"] .season-pumpkin-body{fill:#f47b23;stroke:#ffad59;stroke-width:1.2}
.public-page [data-season="halloween-2026"] .season-pumpkin-body-deep{fill:#e46218}
.public-page [data-season="halloween-2026"] .season-pumpkin-ribs{fill:none;stroke:#c74b13;stroke-width:1.5;opacity:.7}
.public-page [data-season="halloween-2026"] .season-pumpkin-stem{fill:#74582e;stroke:#c39b51;stroke-width:1}
.public-page [data-season="halloween-2026"] .season-pumpkin-light{fill:#fff1ab;stroke:#803014;stroke-width:.8}
.public-page [data-season="halloween-2026"] .season-pumpkin-tooth{fill:#bd4915;stroke:none}
.public-page [data-season="halloween-2026"] .season-star{fill:currentColor;stroke:none;opacity:.74}
.public-page [data-season="halloween-2026"] .season-star-small{opacity:.43}
.public-page [data-season="halloween-2026"] .location{background:#190c06;color:#ffcf9c;box-shadow:inset 0 0 0 1px rgba(255,144,61,.4)}
.public-page [data-season="halloween-2026"] h1{text-shadow:0 2px 20px rgba(255,130,43,.18)}
.public-page [data-season="halloween-2026"] .bio{color:#f5e2d4}
.public-page [data-season="halloween-2026"] .social{color:#ffc58d}
.public-page [data-season="halloween-2026"] .social .season-social-heel{-webkit-filter:sepia(1) saturate(6) hue-rotate(345deg);filter:sepia(1) saturate(6) hue-rotate(345deg)}
.public-page [data-season="halloween-2026"] .link-card.enhanced:not(.photo-card){background:linear-gradient(110deg,#421c10,#2b120b);color:#ffe2c4;border-color:#c97535;box-shadow:inset 0 1px 0 rgba(255,201,141,.1)}
.public-page [data-season="halloween-2026"] .link-card.enhanced:not(.photo-card) small{color:#f6c9a1}
.public-page [data-season="halloween-2026"] .link-card.enhanced:not(.photo-card) strong{text-shadow:none}
.public-page [data-season="halloween-2026"] .links>.link-card.enhanced.primary:not(.photo-card):first-child{background:linear-gradient(110deg,#fff0d9,#ffd8b2 66%,#ffc38a);color:#51210f;border-color:#ffae61;box-shadow:0 8px 25px rgba(255,115,28,.3),inset 0 1px 0 rgba(255,255,255,.55)}
.public-page [data-season="halloween-2026"] .links>.link-card.enhanced.primary:not(.photo-card):first-child small{color:#7a3b20}
.public-page [data-season="halloween-2026"] .link-card.enhanced.animation-pulse::after{box-shadow:0 0 24px 3px rgba(255,123,35,.4)}
.public-page [data-season="halloween-2026"] .link-card.enhanced.photo-card{border-color:#ed994e;box-shadow:0 8px 24px rgba(0,0,0,.2)}
@media(prefers-reduced-motion:reduce){.public-page [data-season="halloween-2026"] .season-avatar-decoration{animation:none!important;transition:none!important}}
