:root{color-scheme:dark;--bg: #08080a;--text: #ffffff;--gutter: 16px;--gap: 14px;--radius: clamp(20px, 6.2vw, 28px);--pad: clamp(14px, 4.4vw, 20px);--ease-out: cubic-bezier(.2, .9, .25, 1);--font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", "Segoe UI", Roboto, system-ui, sans-serif}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-height:100vh;min-height:100dvh;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;background:radial-gradient(90% 55% at 50% 0%,rgba(255,255,255,.055),transparent 70%),radial-gradient(70% 45% at 50% 100%,rgba(120,140,170,.06),transparent 70%),var(--bg)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.app{display:flex;flex-direction:column;width:100%;max-width:560px;min-height:100vh;min-height:100dvh;margin:0 auto;padding:max(env(safe-area-inset-top),14px) max(env(safe-area-inset-right),var(--gutter)) max(env(safe-area-inset-bottom),20px) max(env(safe-area-inset-left),var(--gutter))}.masthead{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:clamp(8px,5.4vh,52px) 2px clamp(14px,3.2vh,28px)}.name{margin:0;font-size:clamp(32px,9.4vw,40px);font-weight:800;line-height:1.05;letter-spacing:-.028em}.monogram{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;font-size:17px;font-weight:700;background:linear-gradient(150deg,#fff3,#ffffff0a);box-shadow:inset 0 1px #ffffff6b,inset 0 0 0 1px #ffffff1a}.monogram{overflow:hidden}.monogram img,.sheet-avatar img{display:block;width:100%;height:100%;object-fit:cover}.grid{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(112px,1fr));gap:var(--gap)}.tile{--c1: 255 255 255;--c2: 200 200 200;position:relative;isolation:isolate;display:flex;flex-direction:column;min-width:0;padding:var(--pad);border:0;border-radius:var(--radius);overflow:hidden;color:#fff;font:inherit;text-align:left;text-decoration:none;cursor:pointer;background:linear-gradient(180deg,#fff3,#ffffff0d 36%,#fff0 56%),radial-gradient(120% 80% at 100% 115%,rgb(0 0 0 / .1),transparent 60%),linear-gradient(158deg,rgb(var(--c1) / .94),rgb(var(--c2) / .8));-webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);box-shadow:inset 0 -12px 26px -18px #00000073,0 22px 44px -30px rgb(var(--c2) / .75),0 1px 2px #00000073;transition:transform .15s var(--ease-out),filter .15s ease;touch-action:manipulation;user-select:none;-webkit-user-select:none}.tile:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;padding:1px;border-radius:inherit;background:linear-gradient(150deg,#ffffffbf,#ffffff29 30%,#ffffff0d 62%,#ffffff52);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;transition:opacity .15s ease}.tile:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(circle at var(--mx, 50%) var(--my, 50%),rgba(255,255,255,.34),transparent 58%);opacity:0;transition:opacity .18s ease;pointer-events:none}.tile[data-tone=orange]{--c1: 248 168 84;--c2: 236 124 44}.tile[data-tone=teal]{--c1: 36 214 182;--c2: 6 164 138}.tile[data-tone=blue]{--c1: 52 184 248;--c2: 12 132 212}.tile[data-tone=coral]{--c1: 246 116 118;--c2: 220 68 82}.tile[data-tone=violet]{--c1: 184 132 238;--c2: 132 78 212}.tile[data-tone=pink]{--c1: 240 128 206;--c2: 206 74 164}.tile:active,.tile[data-active]{transform:scale(.972);filter:brightness(1.06)}.tile:active:after,.tile[data-active]:after{opacity:1}@media (hover: hover) and (pointer: fine){.tile:not(.is-unset):hover{filter:brightness(1.05)}.tile:not(.is-unset):hover:after{opacity:.45}}.tile:focus-visible{outline:3px solid #fff;outline-offset:3px}.tile-icon,.tile-corner{display:inline-grid;place-items:center}.tile-icon{width:clamp(30px,8.6vw,38px);height:clamp(30px,8.6vw,38px)}.tile-icon svg{width:100%;height:100%;stroke-width:1.9;filter:drop-shadow(0 1px 1px rgba(0,0,0,.12))}.tile{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto auto;grid-template-areas:"icon corner" ". ." "label label" "missing missing"}.tile-icon{grid-area:icon;justify-self:start}.tile-corner{grid-area:corner;align-self:start;width:28px;height:28px;border-radius:50%;background:#ffffff38;box-shadow:inset 0 1px #ffffff59}.tile-corner:empty{display:none}.tile-corner svg{width:15px;height:15px;stroke-width:2.4}.tile-label{grid-area:label;margin-top:12px;font-size:clamp(21px,6vw,27px);font-weight:700;line-height:1.1;letter-spacing:-.012em;overflow-wrap:anywhere;text-shadow:0 1px 1px rgba(0,0,0,.1)}.tile-missing{grid-area:missing;margin-top:6px;font:600 11px/1.3 ui-monospace,SF Mono,Menlo,monospace;opacity:.9}.tile.is-unset{cursor:not-allowed;filter:saturate(.35) brightness(.62)}.tile.is-unset:active{transform:none}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;color:inherit;background:#02040875;overscroll-behavior:contain}.sheet-body:focus{outline:none}.sheet::backdrop{background:transparent}.sheet-body{--rest: translate(0, 0);position:absolute;left:0;right:0;bottom:0;width:100%;max-width:560px;max-height:calc(100% - max(env(safe-area-inset-top),12px) - 12px);margin:0 auto;padding:8px max(env(safe-area-inset-right),18px) calc(18px + env(safe-area-inset-bottom)) max(env(safe-area-inset-left),18px);overflow-y:auto;overscroll-behavior:contain;border-radius:30px 30px 0 0;transform:var(--rest);transform-origin:25% 100%;background:linear-gradient(180deg,#ffffff24,#fff0 30%),linear-gradient(170deg,#9664e2a8,#422478c7 45%,#120c22eb);-webkit-backdrop-filter:blur(30px) saturate(170%);backdrop-filter:blur(30px) saturate(170%);box-shadow:inset 0 1px #ffffff73,inset 0 0 0 1px #ffffff1a,0 -24px 60px -34px #aa74ec99}@media (min-width: 720px) and (min-height: 560px){.sheet-body{--rest: translate(-50%, -50%);top:50%;left:50%;right:auto;bottom:auto;width:min(440px,calc(100% - 32px));max-height:calc(100% - 48px);padding:14px 20px 20px;border-radius:30px;transform-origin:20% 85%}.sheet-grabber{display:none!important}}.sheet[data-state=open]{animation:dim-in .22s ease-out both}.sheet[data-state=open] .sheet-body{animation:sheet-in .28s var(--ease-out) both}.sheet[data-state=closing]{animation:dim-out .2s ease-in both}.sheet[data-state=closing] .sheet-body{animation:sheet-out .2s ease-in both}@keyframes dim-in{0%{background-color:#02040800}}@keyframes dim-out{to{background-color:#02040800}}@keyframes sheet-in{0%{opacity:0;transform:var(--rest) translateY(28px) scale(.97)}to{opacity:1;transform:var(--rest)}}@keyframes sheet-out{0%{opacity:1;transform:var(--rest)}to{opacity:0;transform:var(--rest) translateY(20px) scale(.98)}}.sheet-grabber{display:block;width:38px;height:5px;margin:0 auto 6px;border-radius:3px;background:#ffffff59}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.sheet-avatar{display:grid;place-items:center;flex:none;width:52px;height:52px;overflow:hidden;border-radius:50%;font-size:22px;font-weight:700;background:linear-gradient(150deg,#ffffff3d,#ffffff0f);box-shadow:inset 0 1px #ffffff73,inset 0 0 0 1px #ffffff24,0 6px 16px -8px #0009}.sheet-title{display:grid;flex:1;min-width:0}.sheet-eyebrow{font-size:13px;font-weight:600;color:#ffffffa8}.sheet-head h2{margin:0;font-size:24px;font-weight:700;letter-spacing:-.015em;overflow-wrap:anywhere}.sheet-close{display:grid;place-items:center;flex:none;width:44px;height:44px;padding:0;border:0;border-radius:50%;color:#fff;cursor:pointer;background:#ffffff24;box-shadow:inset 0 1px #ffffff59,inset 0 0 0 1px #ffffff14;transition:background .15s ease,transform .15s var(--ease-out)}.sheet-close svg{width:18px;height:18px;stroke-width:2.4}.sheet-close:active{transform:scale(.94);background:#ffffff38}.rows{display:grid;gap:10px;margin:0;padding:0;list-style:none}.row{display:flex;align-items:stretch;min-width:0;border-radius:20px;background:#ffffff14;box-shadow:inset 0 1px #fff3,inset 0 0 0 1px #ffffff12}.row-main{display:flex;flex:1;align-items:center;gap:14px;min-width:0;min-height:64px;padding:11px 14px;border-radius:20px;color:inherit;text-decoration:none;transition:background .15s ease}a.row-main:active{background:#ffffff1a}@media (hover: hover) and (pointer: fine){a.row-main:hover{background:#ffffff0f}}.row-icon{--c1: 255 255 255;--c2: 200 200 200;display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:13px;background:linear-gradient(180deg,#ffffff3d,#fff0 55%),linear-gradient(158deg,rgb(var(--c1)),rgb(var(--c2)));box-shadow:inset 0 1px #ffffff73,inset 0 0 0 1px #ffffff24}.row[data-key=phone] .row-icon{--c1: 36 214 182;--c2: 6 164 138}.row[data-key=email] .row-icon{--c1: 248 168 84;--c2: 236 124 44}.row[data-key=instagram] .row-icon{--c1: 246 116 118;--c2: 220 68 82}.row[data-key=linkedin] .row-icon{--c1: 52 184 248;--c2: 12 132 212}.row-icon svg{width:22px;height:22px}.row-text{display:grid;gap:2px;min-width:0}.row-label{font-size:13px;font-weight:600;color:#ffffffad}.row-value{font-size:clamp(15px,4.5vw,17px);font-weight:600;overflow-wrap:break-word}.row.is-unset{opacity:.6}.row.is-unset .row-value{font:600 12px/1.35 ui-monospace,SF Mono,Menlo,monospace}.row-copy{display:grid;place-items:center;align-content:center;gap:3px;flex:none;min-width:58px;margin:8px 8px 8px 0;padding:6px 8px;border:0;border-radius:14px;color:#fff;font:600 11px/1 var(--font);cursor:pointer;background:#ffffff1a;box-shadow:inset 0 1px #ffffff29;transition:background .16s ease,transform .15s var(--ease-out)}.row-copy svg{width:17px;height:17px}.row-copy:active{transform:scale(.95)}.save-contact{display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;margin-top:12px;border-radius:18px;color:#fff;font-size:16px;font-weight:650;text-decoration:none;background:linear-gradient(180deg,#ffffff42,#ffffff1a);box-shadow:inset 0 1px #fff6,inset 0 0 0 1px #ffffff1f;transition:background .15s ease,transform .15s var(--ease-out)}.save-contact svg{width:20px;height:20px}.save-contact:active{transform:scale(.98);background:#ffffff3d}.save-contact:focus-visible{outline:3px solid #fff;outline-offset:2px}.row-copy[data-copied]{background:#30c8786b}.row-main:focus-visible,.row-copy:focus-visible,.sheet-close:focus-visible{outline:3px solid #fff;outline-offset:2px}@media (min-width: 720px) and (min-height: 600px){.app{max-width:640px;justify-content:center;padding-left:32px;padding-right:32px}.grid{flex:none;grid-template-rows:repeat(3,clamp(150px,21vh,200px));gap:18px}.tile{--radius: 28px;--pad: 22px}.tile-icon{width:38px;height:38px}.tile-label{font-size:28px}.name{font-size:42px}}@media (orientation: landscape) and (max-height: 500px){.app{max-width:920px}.masthead{padding:4px 2px 10px}.name{font-size:28px}.grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(104px,1fr))}}@media (prefers-reduced-motion: reduce){.tile,.sheet-close,.row-copy{transition:filter .12s ease,background .12s ease}.tile:active,.tile[data-active],.sheet-close:active,.row-copy:active{transform:none}.sheet[data-state],.sheet[data-state] .sheet-body{animation:none!important}}.grid{position:relative}.pet{--pet-w: clamp(28px, 8.4vw, 40px);--fur: #fbf6ef;--shade: #e4d9cc;--ink: #2a2630;--pink: #f3a3b2;position:absolute;top:0;left:0;z-index:3;width:var(--pet-w);height:calc(var(--pet-w) * .75);opacity:0;pointer-events:auto;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;will-change:transform;transition:opacity .4s ease;filter:drop-shadow(0 1.5px 1.5px rgba(0,0,0,.32))}.pet[data-kind=dog]{--fur: #f7e2c4;--shade: #e2c49c;--ear: #a8693d;--muzzle: #fff4e4}.pet[data-ready]{opacity:1}.pet:before{content:"";position:absolute;top:-8px;right:-6px;bottom:-2px;left:-6px}.pet-flip{width:100%;height:100%;transition:transform .16s ease}.pet[data-dir=left] .pet-flip{transform:scaleX(-1)}.pet.is-landing .pet-flip{transform:scale(1.08,.9);transform-origin:50% 100%}.pet.is-landing[data-dir=left] .pet-flip{transform:scale(-1.08,.9)}.pet-svg{display:block;width:100%;height:100%;overflow:visible}.pet .fur{fill:var(--fur)}.pet .shade{fill:var(--shade)}.pet .fur-stroke{fill:none;stroke:var(--fur);stroke-linecap:round}.pet .shade-stroke{fill:none;stroke:var(--shade);stroke-linecap:round}.pet .leg{stroke-width:3.1}.pet .leg.thick{stroke-width:3.6}.pet .eye,.pet .ink{fill:var(--ink)}.pet .ink-line{fill:none;stroke:var(--ink);stroke-width:.9;stroke-linecap:round}.pet .pink{fill:var(--pink)}.pet .blush{fill:var(--pink);opacity:.45}.pet .ear{fill:var(--ear, var(--fur))}.pet .muzzle{fill:var(--muzzle, var(--fur))}.pet .pet-shadow{fill:#00000038}.pet .leg,.pet .tail,.pet .eye,.pet .breathe,.pet .bob{transform-box:fill-box}.pet .leg{transform-origin:50% 0%}.pet[data-pose=walk] .leg-a{animation:pet-step .3s ease-in-out infinite alternate}.pet[data-pose=walk] .leg-b{animation:pet-step .3s ease-in-out infinite alternate-reverse}.pet[data-pose=walk] .bob{animation:pet-bob .15s ease-in-out infinite alternate}.pet[data-kind=dog][data-pose=walk] .leg-a,.pet[data-kind=dog][data-pose=walk] .leg-b{animation-duration:.22s}.pet .is-jump .leg-front{transform:rotate(-38deg)}.pet .is-jump .leg-back{transform:rotate(38deg)}.pet .tail{transform-origin:100% 100%;animation:pet-swish 1.9s ease-in-out infinite alternate}.pet .tail.wag{animation:pet-wag .24s ease-in-out infinite alternate}.pet[data-kind=dog] .pose-walk .tail.wag{animation-duration:.18s}.pet .eye{transform-origin:50% 50%;animation:pet-blink 4.8s infinite}.pet .breathe{transform-origin:50% 100%;animation:pet-breathe 2.8s ease-in-out infinite}.pet-zzz{position:absolute;right:-2px;bottom:70%;pointer-events:none}.pet-zzz i{position:absolute;right:0;bottom:0;font:700 11px/1 var(--font);font-style:normal;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.35);opacity:0;animation:pet-z 3.6s ease-out infinite}.pet-zzz i:nth-child(2){animation-delay:1.2s;font-size:9px}.pet-zzz i:nth-child(3){animation-delay:2.4s;font-size:8px}.pet-hearts{position:absolute;left:50%;bottom:60%;width:0;height:0;pointer-events:none}.pet-hearts svg{--spread: calc((var(--i) - (var(--n) - 1) / 2) * 9px);position:absolute;left:-6px;bottom:0;width:12px;height:12px;fill:#ff5f86;filter:drop-shadow(0 1px 1px rgba(0,0,0,.3));animation:pet-heart 1.1s cubic-bezier(.2,.8,.3,1) both;animation-delay:calc(var(--i) * 45ms)}@keyframes pet-step{0%{transform:rotate(-24deg)}to{transform:rotate(24deg)}}@keyframes pet-bob{0%{transform:translateY(0)}to{transform:translateY(-.7px)}}@keyframes pet-swish{0%{transform:rotate(-9deg)}to{transform:rotate(12deg)}}@keyframes pet-wag{0%{transform:rotate(-20deg)}to{transform:rotate(18deg)}}@keyframes pet-blink{0%,93%,to{transform:scaleY(1)}96%{transform:scaleY(.12)}}@keyframes pet-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.015,1.06)}}@keyframes pet-z{0%{opacity:0;transform:translate(0) scale(.7)}20%{opacity:1}to{opacity:0;transform:translate(10px,-22px) scale(1.1)}}@keyframes pet-heart{0%{opacity:0;transform:translateY(4px) scale(.4)}25%{opacity:1;transform:translate(calc(var(--spread) * .5),-6px) scale(1.1)}to{opacity:0;transform:translate(var(--spread),-34px) scale(.85)}}@media (prefers-reduced-motion: reduce){.pet .leg,.pet .tail,.pet .breathe,.pet .bob,.pet-zzz i{animation:none!important}.pet-zzz i:first-child{opacity:.9}.pet-hearts svg{animation-name:pet-heart-fade}@keyframes pet-heart-fade{0%{opacity:0}30%{opacity:1}to{opacity:0}}}
