/* Montserrat and Cinzel, SIL Open Font License. Latin woff2, self-hosted. */
@font-face{font-family:Montserrat;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/montserrat-400.woff2) format("woff2")}
@font-face{font-family:Montserrat;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/montserrat-500.woff2) format("woff2")}
@font-face{font-family:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/montserrat-600.woff2) format("woff2")}
@font-face{font-family:Cinzel;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cinzel-600.woff2) format("woff2")}
:root{
  --black:#000000;--white:#FFFFFF;--pink:#E31C79;--pink-deep:#CE0F69;--pink-angel:#F57EB6;
  --blush:#F5B6CD;--petal:#F2D4D7;--charcoal:#3D3935;--gold:#B9975B;--silver:#D0D3D4;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
body{margin:0;background:var(--black);color:var(--white);font-family:Montserrat,system-ui,sans-serif;font-weight:400;font-size:16px;line-height:1.5}
@media(min-width:900px){body{font-size:18px}}
header.top{display:flex;align-items:center;height:44px;padding:0 16px}
.logo{font-weight:600;letter-spacing:.04em;font-size:18px;text-transform:uppercase}.logo span{color:var(--pink)}
.screen{max-width:420px;margin:0 auto;padding:0 16px}
h1{font-family:Montserrat,system-ui,sans-serif;font-weight:600;font-size:24px;line-height:1.2;letter-spacing:0;text-transform:none;margin:24px 0 8px}
@media(min-width:900px){h1{font-size:32px}}
.hero{font-family:Cinzel,Georgia,serif;font-weight:600;font-size:40px;line-height:1.05;letter-spacing:.06em;text-transform:uppercase;margin:0 0 18px;color:var(--white)}
@media(min-width:900px){.hero{font-size:64px;letter-spacing:.08em}}
.rule{display:block;width:48px;height:1px;background:var(--gold);margin:0 0 22px}
p.sub{color:var(--white);margin:0 0 20px}
.fine{color:var(--white);font-size:12px;line-height:1.4;margin:12px 0 0;font-weight:400}
.simline{margin:0}
.btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;margin-top:0;padding:14px 18px;border:0;border-radius:0;background:var(--pink);color:var(--white);font-family:Montserrat,system-ui,sans-serif;font-size:20px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .2s ease,transform .2s ease}
.btn:hover{background:var(--pink-deep)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--white);outline-offset:3px}
#flow.screen{max-width:640px;padding-top:min(12vh,96px)}
#flow .btn{max-width:360px}
@media(min-width:900px){#flow.screen{max-width:920px;padding-top:min(14vh,120px)}}
#retake.screen,#problem.screen,#err.screen{padding-top:min(16vh,120px)}
#retake .btn,#problem .btn,#err .btn{margin-top:8px}
#working.screen{max-width:520px;padding-top:8px}
.shot{height:min(68vh,620px);overflow:hidden;background:var(--black)}
.shot img{width:100%;height:100%;object-fit:cover;object-position:center 62%;display:block}
.ring-home{display:flex;flex-direction:column;align-items:center;margin-top:14px}
.ring{position:relative;width:104px;height:104px}
.ring svg{display:block;width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:8}
.ring .track{stroke:var(--silver)}
.ring .arc{stroke:var(--pink);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100}
.pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--white);font-family:Montserrat,system-ui,sans-serif;font-weight:600;font-size:22px;letter-spacing:0;font-variant-numeric:tabular-nums}
.ring-home .link{margin-top:2px}
.link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;margin-top:4px;padding:8px 0;background:none;border:0;color:var(--white);font-family:Montserrat,system-ui,sans-serif;font-size:16px;font-weight:500;letter-spacing:0;text-transform:none;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.link:focus-visible{outline:2px solid var(--white);outline-offset:3px}
#done.screen:not([hidden]){max-width:480px;height:calc(100vh - 44px);height:calc(100dvh - 44px);margin:0 auto;padding:8px 12px 10px;display:flex;flex-direction:column;gap:8px}
#done .pane{flex:1.08;min-height:0;display:flex;flex-direction:column;gap:6px}
#done .cap{flex:none;display:flex;justify-content:space-between;font-size:16px;font-weight:500;line-height:1.2}
#done .cmp{flex:1;min-height:0}
#done .simline{flex:none}
#done .laugh{flex:1;min-height:0;margin:0;aspect-ratio:auto}
#done .ring-slot:not([hidden]){display:flex;justify-content:center;margin-bottom:8px}
#done .ring{width:72px;height:72px}
#done .pct{font-size:18px}
#done .actions{flex:none;padding-bottom:env(safe-area-inset-bottom)}
#done .actions .link{display:flex}
@media(min-width:900px){
  #done.screen:not([hidden]){max-width:1040px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) auto;column-gap:16px;row-gap:12px;height:calc(100vh - 44px);height:calc(100dvh - 44px);padding:12px 24px 16px}
  #done .pane{grid-column:1;grid-row:1}
  #done .laugh{grid-column:2;grid-row:1}
  #done .actions{grid-column:1 / -1;grid-row:2;width:min(320px,100%);margin:0 auto}
}
.cmp{position:relative;overflow:hidden;background:var(--black);touch-action:none;user-select:none}
.cmp img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 62%}
.cmp .after{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 62%;clip-path:inset(0 0 0 100%)}
.cmp .bar{position:absolute;top:0;bottom:0;left:100%;width:2px;background:var(--white);transform:translateX(-50%)}
.cmp .knob{position:absolute;top:18%;left:100%;width:44px;height:44px;border-radius:50%;background:var(--white);transform:translate(-50%,-50%);box-shadow:0 2px 10px rgba(0,0,0,.35);cursor:ew-resize}
.laugh{position:relative;overflow:hidden;background:var(--black)}
.laugh img,.laugh video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 62%}
.laugh video{opacity:0}
.laugh.ready video{opacity:1;transition:opacity .45s ease}
#done.is-on{animation:rise .45s ease}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
  #done.is-on,.laugh.ready video,.ring .arc{animation:none;transition:none}
}
.card{border:1px solid var(--silver);padding:16px 18px;margin:12px auto;max-width:680px}
main>h1,main>.sub,main>.disc{max-width:680px;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px}
.disc{font-size:12px;line-height:1.4;color:var(--white)}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.embed header.top{height:auto;min-height:44px;padding:12px 56px 12px 16px}
body.embed #done.screen:not([hidden]){height:calc(100dvh - 68px)}
