:root{--cream:#f6ecdc;--cream-deep:#efe2cc;--paper:#fdf8ec;--ink:#3a2b4f;--ink-soft:#77688f;--ink-faint:#a396b6;--pink:#e2799a;--pink-deep:#c85a7e;--pink-soft:#f3c1cf;--purple:#8f76c9;--purple-deep:#6f57a8;--lilac:#cbbbe9;--blue:#a9c0e8;--butter:#f2c46c;--accent-dot:#d6486b;--line:#3a2b4f24;--shadow-soft:0 14px 40px #3a2b4f1f;--shadow-lift:0 24px 60px #3a2b4f2e;--serif:"Fraunces", "Iowan Old Style", Georgia, serif;--mono:"Courier Prime", "Courier New", monospace;--hand:"Kalam", "Comic Sans MS", cursive}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--serif);background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100dvh;overflow-x:hidden}.backdrop{z-index:0;pointer-events:none;background:radial-gradient(52% 38% at 18% 8%,#e2799a29,#0000 70%),radial-gradient(46% 36% at 85% 16%,#8f76c924,#0000 70%),radial-gradient(50% 42% at 78% 92%,#f2c46c21,#0000 70%),radial-gradient(46% 40% at 12% 88%,#a9c0e826,#0000 70%);position:fixed;inset:0}.backdrop:after{content:"";opacity:.05;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");position:absolute;inset:0}.doodle{z-index:0;pointer-events:none;opacity:.5;animation:14s ease-in-out infinite doodle-drift;position:fixed}.doodle:nth-child(odd){animation-duration:18s;animation-delay:-6s}@keyframes doodle-drift{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-14px)rotate(8deg)}}.shell{z-index:1;max-width:460px;padding:16px 20px calc(48px + env(safe-area-inset-bottom));flex-direction:column;min-height:100dvh;margin:0 auto;display:flex;position:relative}.topbar{justify-content:space-between;align-items:center;padding:8px 2px 20px;display:flex}.brand{color:var(--ink);font-family:var(--mono);letter-spacing:.08em;background:0 0;border-radius:8px;align-items:center;gap:8px;padding:2px 4px;font-size:12px;font-weight:700;display:flex}.brand-orb{background:linear-gradient(180deg, var(--pink) 0%, var(--pink) 48%, var(--paper) 52%, var(--paper) 100%);border:1.5px solid var(--ink);border-radius:50%;width:20px;height:20px;box-shadow:inset -2px -2px #3a2b4f1f}.progress{align-items:center;gap:0;display:flex}.progress .dot{border:1.5px solid var(--ink-faint);background:0 0;border-radius:50%;width:7px;height:7px;transition:all .4s}.progress .dot.done{background:var(--ink-faint);border-color:var(--ink-faint)}.progress .dot.active{background:var(--accent-dot);border-color:var(--accent-dot);transform:scale(1.25)}.progress .rail{background:var(--ink-faint);opacity:.5;width:14px;height:1.5px}.kicker{font-family:var(--mono);letter-spacing:.32em;text-transform:uppercase;color:var(--pink-deep);margin-bottom:10px;font-size:11px;font-weight:700}.title{letter-spacing:-.015em;text-wrap:balance;font-size:clamp(30px,8.5vw,38px);font-weight:600;line-height:1.08}.title em{font-style:italic;font-weight:500}.sub{color:var(--ink-soft);text-wrap:pretty;margin-top:12px;font-size:15.5px;line-height:1.55}.mono-note{font-family:var(--mono);color:var(--ink-soft);font-size:11.5px;line-height:1.6}.btn{appearance:none;cursor:pointer;font-family:var(--serif);border:none;border-radius:16px;transition:transform .15s,box-shadow .2s,background .2s}.btn:active{transform:translateY(1px)scale(.99)}.btn-primary{background:var(--ink);width:100%;color:var(--paper);justify-content:space-between;align-items:center;gap:12px;padding:17px 22px;font-size:16.5px;font-weight:500;display:flex;box-shadow:0 10px 24px #3a2b4f47}.btn-primary:hover{background:#2d2040;box-shadow:0 14px 30px #3a2b4f57}.btn-primary .arrow{font-family:var(--mono);font-size:15px}.btn-ghost{color:var(--ink);text-underline-offset:4px;text-decoration:underline;-webkit-text-decoration-color:var(--ink-faint);text-decoration-color:var(--ink-faint);background:0 0;padding:10px 14px;font-size:14px}.btn-ghost:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.btn-secondary{background:var(--paper);border:1.5px solid var(--ink);width:100%;color:var(--ink);padding:15px 22px;font-size:15.5px;font-weight:500;box-shadow:0 6px #3a2b4f1f}.btn-secondary:hover{background:#fffdf5}.btn:focus-visible,.upload-zone:focus-visible,a:focus-visible{outline:2.5px solid var(--purple-deep);outline-offset:3px}.stage{flex-direction:column;flex:1;animation:.55s cubic-bezier(.22,1,.36,1) both stage-in;display:flex}@keyframes stage-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.upload-zone{text-align:center;cursor:pointer;background:#fdf8ecbf;border:2px dashed #3a2b4f52;border-radius:24px;margin-top:28px;padding:34px 24px;transition:all .25s;position:relative}.upload-zone:hover,.upload-zone.dragging{border-color:var(--pink-deep);background:var(--paper);box-shadow:var(--shadow-soft);transform:translateY(-2px)}.upload-zone.dragging{border-style:solid}.upload-capsule{width:54px;height:54px;margin:0 auto 14px;animation:3s ease-in-out infinite capsule-bob}@keyframes capsule-bob{0%,to{transform:translateY(0)rotate(-6deg)}50%{transform:translateY(-7px)rotate(6deg)}}.upload-zone h3{margin-bottom:6px;font-size:19px;font-weight:600}.upload-zone p{font-family:var(--mono);color:var(--ink-soft);font-size:11.5px;line-height:1.65}.upload-zone p b{color:var(--pink-deep)}.privacy{text-align:left;justify-content:center;align-items:flex-start;gap:8px;margin-top:16px;display:flex}.privacy svg{flex-shrink:0;margin-top:1px}.sample-row{text-align:center;margin-top:22px}.howto{border-top:1.5px dashed var(--line);margin-top:30px;padding-top:18px}.howto summary{font-family:var(--mono);letter-spacing:.06em;cursor:pointer;color:var(--ink-soft);font-size:12px;font-weight:700}.howto ol{color:var(--ink-soft);margin:12px 0 4px 18px;font-size:14px;line-height:1.9}.error-note{font-family:var(--mono);color:var(--accent-dot);background:#d6486b14;border:1.5px solid #d6486b4d;border-radius:12px;margin-top:14px;padding:10px 14px;font-size:12px;animation:.3s both stage-in}.photo-stage .sub{max-width:390px}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 10px;margin-top:24px;display:grid}.photo-person{min-width:0}.photo-person-button{appearance:none;color:var(--ink);cursor:pointer;width:100%;min-height:44px;font-family:var(--serif);background:0 0;border:0;flex-direction:column;align-items:center;display:flex}.photo-person-button:focus-visible{outline:2.5px solid var(--purple-deep);outline-offset:4px;border-radius:18px}.photo-person-portrait{aspect-ratio:4/5;width:min(26vw,102px);color:var(--paper);background:radial-gradient(circle at 34% 28%, hsla(var(--portrait-hue,326), 78%, 82%, .95), transparent 34%), hsl(var(--portrait-hue,326), 48%, 58%);box-shadow:0 8px 0 #3a2b4f14, var(--shadow-soft);border:2px solid #3a2b4f40;border-radius:22px 22px 18px 18px;place-items:center;transition:transform .2s,border-color .2s;display:grid;overflow:hidden}.photo-person-button:hover .photo-person-portrait{border-color:var(--pink-deep);transform:translateY(-3px)rotate(-1deg)}.photo-person:nth-child(2n) .photo-person-portrait{transform:rotate(1.5deg)}.photo-person:nth-child(2n) .photo-person-button:hover .photo-person-portrait{transform:translateY(-3px)rotate(0)}.photo-person-portrait>span{font-family:var(--hand);text-shadow:0 2px #3a2b4f29;font-size:28px;font-weight:700}.photo-person-portrait img{object-fit:cover;width:100%;height:100%}.photo-person.has-photo .photo-person-portrait{border-color:var(--paper);box-shadow:0 0 0 2px var(--pink-deep), 0 10px 22px #3a2b4f2e}.photo-person-name{max-width:100%;font-family:var(--hand);text-overflow:ellipsis;white-space:nowrap;margin-top:8px;font-size:17px;font-weight:700;line-height:1.1;overflow:hidden}.photo-person-action{font-family:var(--mono);color:var(--pink-deep);text-transform:uppercase;letter-spacing:.08em;margin-top:2px;font-size:9px}.photo-privacy{text-align:center;justify-content:center;gap:7px;margin-top:18px;display:flex}.photo-actions{margin-top:20px}.group-pill{background:var(--paper);border:1.5px solid var(--line);box-shadow:var(--shadow-soft);border-radius:999px;align-items:center;gap:10px;max-width:100%;margin:18px auto 4px;padding:8px 16px 8px 8px;display:flex}.avatar-stack{display:flex}.avatar{border:2px solid var(--paper);width:28px;height:28px;font-family:var(--mono);color:var(--paper);border-radius:50%;flex-shrink:0;place-items:center;font-size:10px;font-weight:700;display:grid}.avatar-stack .avatar+.avatar{margin-left:-9px}.group-pill .meta{min-width:0}.group-pill .name{white-space:nowrap;text-overflow:ellipsis;font-size:14.5px;font-weight:600;overflow:hidden}.group-pill .sub-meta{font-family:var(--mono);color:var(--ink-soft);font-size:10.5px}.machine-wrap{-webkit-user-select:none;user-select:none;width:min(100%,380px);margin:6px auto 0;position:relative}.machine-svg{width:100%;height:auto;display:block}.machine-wrap.shaking .globe-orbs{animation:.55s ease-in-out infinite orbs-rumble}@keyframes orbs-rumble{0%,to{transform:translate(0)}20%{transform:translate(-2px,-3px)}40%{transform:translate(2px,-1px)}60%{transform:translate(-1px,-4px)}80%{transform:translate(2px,-2px)}}.machine-wrap.shaking .machine-body{transform-origin:50% 90%;animation:.55s ease-in-out infinite body-wiggle}@keyframes body-wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-.7deg)}75%{transform:rotate(.7deg)}}.orb-g{transition:opacity .5s,transform .5s}.orb-g.pulled-away{opacity:.22;filter:saturate(.4)}.dial-hit{cursor:grab}.dial-hit:active{cursor:grabbing}.dial-g{will-change:transform;transition:transform .12s linear}.dial-g.spinning{transition:transform .95s cubic-bezier(.3,0,.2,1)}.machine-hint{text-align:center;font-family:var(--mono);color:var(--ink-soft);justify-content:center;align-items:center;gap:8px;margin-top:16px;font-size:12px;display:flex}.machine-hint .swirl{animation:2.6s ease-in-out infinite swirl-spin;display:inline-flex}@keyframes swirl-spin{0%,60%,to{transform:rotate(0)}30%{transform:rotate(160deg)}}.drop-capsule{pointer-events:none;filter:drop-shadow(0 6px 8px #3a2b4f4d);width:15%;margin-left:-7.5%;animation:.9s cubic-bezier(.34,1.3,.64,1) both capsule-drop;position:absolute;bottom:8.5%;left:50%}@keyframes capsule-drop{0%{opacity:0;transform:translateY(-90px)scale(.9)}35%{opacity:1;transform:translateY(6px)scale(1)}60%{transform:translateY(-14px)scale(1)}80%{transform:translateY(2px)scale(1)}to{transform:translateY(0)scale(1)}}.center-stage{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:12px 0 8px;display:flex}.big-capsule{width:min(58vw,230px);margin:26px 0 10px;position:relative}.big-capsule svg{width:100%;height:auto;display:block;overflow:visible}.big-capsule.idle svg{animation:2.8s ease-in-out infinite capsule-float}@keyframes capsule-float{0%,to{transform:translateY(0)rotate(-2.5deg)}50%{transform:translateY(-10px)rotate(2.5deg)}}.big-capsule.wobbling svg{animation:.8s ease-in-out infinite capsule-wobble}@keyframes capsule-wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-7deg)}50%{transform:rotate(6deg)}75%{transform:rotate(-4deg)}}.cap-top,.cap-bottom{transition:transform .7s cubic-bezier(.34,1.4,.64,1)}.big-capsule.open .cap-top{transform:translate(-15px,-36px)rotate(-20deg)}.big-capsule.open .cap-bottom{transform:translate(12px,22px)rotate(11deg)}.big-capsule.open,.big-capsule.wobbling{margin-top:52px}.puller-chip{background:var(--paper);border:1.5px solid var(--line);box-shadow:var(--shadow-soft);border-radius:16px;align-items:center;gap:10px;margin-top:18px;padding:10px 18px 10px 10px;display:inline-flex}.puller-chip .who{text-align:left}.puller-chip .who .label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-size:10px}.puller-chip .who .val{font-size:16.5px;font-weight:600}.puller-chip .count{font-family:var(--mono);color:var(--ink-soft);white-space:nowrap;margin-left:8px;font-size:13px}.sparkle-field{pointer-events:none;position:absolute;inset:-60px}.sparkle{animation:1.15s cubic-bezier(.1,.7,.4,1) both sparkle-fly;animation-delay:var(--delay);font-size:15px;position:absolute;top:50%;left:50%}@keyframes sparkle-fly{0%{opacity:0;transform:translate(0)scale(.2)rotate(0)}25%{opacity:1}to{transform:translate(var(--dx), var(--dy)) scale(1) rotate(var(--rot));opacity:0}}.unseal-note{font-family:var(--mono);color:var(--ink-soft);margin-top:22px;font-size:12px;animation:1.6s ease-in-out infinite pulse-soft}@keyframes pulse-soft{0%,to{opacity:.55}50%{opacity:1}}.report-card{background:var(--paper);box-shadow:var(--shadow-lift);font-family:var(--hand);border:1.5px solid #3a2b4f33;border-radius:20px;margin-top:20px;padding:20px 18px 18px;position:relative}.report-card:before{content:"";background:#f2c46c8c;border-left:1px dashed #3a2b4f2e;border-right:1px dashed #3a2b4f2e;width:84px;height:20px;position:absolute;top:-9px;left:50%;transform:translate(-50%)rotate(-2deg)}.rc-head{border-bottom:1.5px dashed var(--line);align-items:center;gap:12px;padding-bottom:14px;display:flex}.rc-photo{aspect-ratio:4/5;background:var(--cream-deep);border:2px solid #3a2b4f38;border-radius:18px 18px 14px 14px;width:calc(100% + 24px);height:auto;margin:0 -12px 24px;position:relative;overflow:hidden;transform:rotate(-.8deg);box-shadow:0 10px #3a2b4f14,0 20px 38px #3a2b4f24}.rc-photo:before{content:"";z-index:1;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 -72px 54px -42px #3a2b4fb3}.rc-photo img{object-fit:cover;width:100%;height:100%;display:block}.rc-photo figcaption{z-index:2;color:#fffdf5;font-family:var(--hand);text-shadow:0 1px 8px #3a2b4f8c;font-size:20px;line-height:1.2;position:absolute;bottom:14px;left:18px;right:18px}.rc-photo-empty{background:radial-gradient(circle at 50% 35%,#e2799a33,#0000 34%),linear-gradient(145deg,#fdf8ecf5,#efe2cce0);border-style:dashed;border-color:#c85a7e80;place-items:center;display:grid}.rc-photo-empty:before{box-shadow:none}.rc-photo-add{appearance:none;width:100%;height:100%;min-height:44px;color:var(--ink);cursor:pointer;font-family:var(--hand);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.rc-photo-add:focus-visible,.rc-photo-change:focus-visible{outline:3px solid var(--purple-deep);outline-offset:-6px}.rc-photo-initials{width:88px;height:88px;color:var(--paper);border:3px solid var(--paper);box-shadow:0 0 0 2px var(--pink-deep), inset -6px -6px 0 #3a2b4f1f;border-radius:50%;place-items:center;font-size:30px;font-weight:700;display:grid}.rc-photo-add strong{margin-top:6px;font-size:25px;line-height:1.15}.rc-photo-add>span:last-child{font-family:var(--mono);letter-spacing:.08em;color:var(--pink-deep);text-transform:uppercase;font-size:10px}.rc-photo-change{appearance:none;z-index:3;min-height:44px;color:var(--paper);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;background:#3a2b4fb8;border:1px solid #fdf8ec99;border-radius:999px;padding:0 14px;font-size:9px;font-weight:700;position:absolute;top:12px;right:12px}.rc-head .avatar{border:none;width:46px;height:46px;font-size:15px;box-shadow:inset -3px -3px #3a2b4f24}.rc-head .rc-kicker{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-size:9.5px}.rc-head .rc-name{font-family:var(--hand);font-size:28px;font-weight:700;line-height:1.15}.award-chip{background:#e2799a21;border:1.5px solid #c85a7e59;border-radius:12px;align-items:center;gap:8px;margin-top:12px;padding:9px 12px;display:flex}.award-chip .tag{font-family:var(--mono);letter-spacing:.12em;background:var(--pink-deep);color:var(--paper);border-radius:6px;flex-shrink:0;padding:3px 6px;font-size:9px;font-weight:700}.award-chip .txt{font-family:var(--hand);font-size:18px;font-weight:700}.stat-grid{grid-template-columns:1fr 1fr;gap:9px;margin-top:14px;display:grid}.stat-tile{border:1.5px solid var(--line);background:#fdf8ec99;border-radius:14px;padding:12px 12px 10px;position:relative;overflow:hidden}.stat-tile.tinted{background:var(--tile-bg,#e2799a17)}.stat-tile .st-label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);justify-content:space-between;align-items:center;gap:6px;font-size:9.5px;font-weight:700;display:flex}.stat-tile .st-value{font-family:var(--hand);letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin-top:5px;font-size:29px;font-weight:700}.stat-tile .st-sub{font-family:var(--mono);color:var(--ink-soft);margin-top:2px;font-size:10px}.stat-tile .st-sub b{color:var(--pink-deep)}.stat-wide{grid-column:1/-1;justify-content:space-between;align-items:center;gap:12px;display:flex}.stamp{border:1.7px solid var(--pink-deep);width:46px;height:46px;font-family:var(--mono);letter-spacing:.06em;color:var(--pink-deep);text-align:center;opacity:.85;border-radius:50%;flex-shrink:0;place-items:center;font-size:7.5px;font-weight:700;line-height:1.25;display:grid;transform:rotate(-12deg)}.quote-box{background:#a9c0e824;border:1.5px solid #a9c0e8b3;border-radius:14px;margin-top:9px;padding:13px 14px}.quote-box .q-label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);justify-content:space-between;font-size:9.5px;font-weight:700;display:flex}.quote-box .q-text{font-family:var(--hand);margin-top:6px;font-size:18px;line-height:1.45}.rc-footer{font-family:var(--mono);color:var(--ink-soft);justify-content:space-between;align-items:center;margin-top:13px;font-size:10px;display:flex}.card-actions{flex-direction:column;gap:10px;margin-top:18px;display:flex}.band-hero{background:radial-gradient(65% 60% at 50% 42%, #fffbf0f2, #fdf8ec99), var(--paper);box-shadow:var(--shadow-lift);border:1.5px solid #3a2b4f2e;border-radius:22px;margin-top:18px;padding:10px 12px 6px;position:relative;overflow:hidden}.band-stage>.title,.band-stage .champion-row{font-family:var(--hand)}.band-hero svg{width:100%;height:auto;display:block}.band-svg-wrap{transform-origin:50% 40%;animation:5s ease-in-out infinite band-sway}@keyframes band-sway{0%,to{transform:rotate(-1.4deg)}50%{transform:rotate(1.4deg)}}.champion-row{background:var(--paper);border:1.5px solid var(--line);box-shadow:var(--shadow-soft);border-radius:16px;align-items:center;gap:11px;margin-top:12px;padding:11px 16px 11px 11px;display:flex}.champion-row .avatar{border:none;width:40px;height:40px;font-size:13px;box-shadow:inset -3px -3px #3a2b4f24}.champion-row .c-meta{flex:1;min-width:0}.champion-row .c-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-size:9.5px}.champion-row .c-name{font-family:var(--hand);font-size:18px;font-weight:700}.champion-row .c-stat{font-family:var(--mono);white-space:nowrap;font-size:15px;font-weight:700}.tally{text-align:center;font-family:var(--mono);color:var(--ink-soft);letter-spacing:.05em;margin-top:14px;font-size:11px}.confetti-done{margin-top:6px;font-size:14px}.toast{bottom:calc(20px + env(safe-area-inset-bottom));background:var(--ink);color:var(--paper);font-family:var(--mono);box-shadow:var(--shadow-lift);z-index:50;text-align:center;border-radius:999px;max-width:88vw;padding:11px 18px;font-size:12.5px;animation:.35s cubic-bezier(.22,1,.36,1) both toast-in;position:fixed;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(14px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.15s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width>=700px){.shell{padding-top:34px}.title{font-size:40px}}
