:root{color:#17252b;font-synthesis:none;--coral:#df685b;--sage:#748877;--muted:#798187;--line:#d9d7d2;--surface:#faf9f6;background:#faf9f6;font-family:Manrope,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.6}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:default}button,a,input{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible{outline-offset:4px;outline:3px solid #748877}button{color:inherit;background:0 0;border:0}a{color:inherit}h1,h2,p{margin:0}h1{letter-spacing:-1px;text-wrap:balance;font-size:30px;font-weight:800;line-height:1.25}h2{letter-spacing:-.5px;font-size:23px;line-height:1.3}p{overflow-wrap:anywhere}.app-shell{border:1px solid var(--line);border-radius:25px;flex-direction:column;max-width:470px;min-height:calc(100dvh - 48px);margin:24px auto;padding:32px 28px 20px;display:flex}header{justify-content:space-between;align-items:center;min-height:46px;display:flex}.brand{letter-spacing:-1px;align-items:center;gap:12px;font-size:29px;font-weight:800;display:flex}.brand-hearts{width:53px;height:38px;display:inline-block;position:relative}.brand-hearts svg{fill:none;width:35px;height:35px;stroke:var(--coral);stroke-width:7px;position:absolute;top:0;left:0}.brand-hearts svg+svg{stroke:var(--sage);top:6px;left:18px}.profile-toggle{padding:0}.avatar{color:#fff;background:#83927e;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;font-size:16px;font-weight:500;display:inline-flex;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar.large{width:155px;height:155px;font-size:50px}.screen{text-align:center;padding-top:56px}.intro{color:#707c83;max-width:380px;margin:14px auto 0;font-size:17px;line-height:1.55}.intro strong{font-weight:600}main{flex:1}.heart-stage{place-items:center;width:270px;height:260px;margin:28px auto;display:grid;position:relative}.heart-solid{width:175px;height:165px;color:var(--coral);z-index:1;position:relative}.heart-aura{color:#fae6e0;width:225px;animation:2.8s ease-in-out infinite breathe;position:absolute;inset:18px auto auto}.heart-aura svg{width:100%;height:225px}.heart-aura.second{color:#fcf0ea;z-index:-1;width:270px;animation-delay:-1.4s;top:0}.heart-stage.with-qr{width:320px;max-width:100%;height:300px;margin-top:24px;margin-bottom:8px}.with-qr .heart-solid{width:295px;height:280px}.with-qr .heart-aura{width:320px;top:-3px}.with-qr .heart-aura svg{height:310px}.with-qr .heart-aura.second{width:350px;max-width:110%;top:-15px}.qr-surface{z-index:2;background:#fff;border-radius:12px;place-items:center;width:155px;height:155px;display:grid;position:absolute;top:65px;overflow:hidden}.qr-surface img{width:100%;height:100%;image-rendering:pixelated}.qr-surface span{padding:12px;font-size:12px}form{text-align:left;flex-direction:column;gap:12px;display:flex}label{font-size:15px;font-weight:600}input:not([type=file]):not([type=range]){color:#17252b;background:0 0;border:1px solid #cbcfcf;border-radius:14px;width:100%;min-height:58px;padding:14px 18px;font-size:17px}input::placeholder{color:#92999b}.primary,.secondary{border-radius:15px;width:100%;min-height:56px;padding:14px 18px;font-size:16px;font-weight:700;transition:background .18s,transform .18s;display:block}.primary{background:var(--coral);color:#fff;margin-top:12px}.primary:hover:not(:disabled){background:#cd5b50;transform:translateY(-1px)}.secondary{border:1px solid var(--line);color:#465f53;margin-top:12px}.secondary:hover:not(:disabled){background:#efeee9}.hint{color:#8b9295;text-align:center;font-size:13px}.text-button{color:#536d5f;overflow-wrap:anywhere;min-height:44px;padding:12px 4px;font-size:14px;line-height:1.4}.text-button:hover:not(:disabled){text-decoration:underline}.text-button.danger{color:#ad5148}.error{color:#a94038;text-align:left;background:#fff0ed;border-radius:10px;margin:12px 0;padding:12px 14px;font-size:14px}.notice{color:#536d5f;overflow-wrap:anywhere;margin:12px 0;font-size:14px}.link-stack{flex-direction:column;gap:0;display:flex}.code-input{text-align:center;letter-spacing:9px;font-size:25px!important}.auth-screen .hint{margin-top:2px}.profile-avatar{margin:48px auto 4px}.photo-button{color:#536d5f;cursor:pointer;padding:10px;font-size:14px;display:block}.photo-button input{clip-path:inset(50%);width:1px;height:1px;position:absolute}.photo-button:focus-within{outline:2px solid var(--sage)}.profile-screen form{margin-top:32px}.settings-actions{border-top:1px solid var(--line);justify-content:space-between;gap:8px;margin-top:24px;display:flex}.invite-code{letter-spacing:3px;font-size:25px;font-weight:800;line-height:1.2}.countdown{font-variant-numeric:tabular-nums;margin:8px 0 16px}.inline-actions{justify-content:center;gap:18px;display:flex}.request-panel{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;padding:18px 0;display:flex}.request-panel p{text-align:left;flex:1;font-size:14px}.preview-person{margin:36px 0}.preview-person h2{margin-top:18px}.couple-portraits{justify-content:center;align-items:center;gap:14px;margin:62px 0 28px;display:flex}.couple-portraits>div{flex:1;min-width:0}.couple-portraits .large{width:115px;height:115px;font-size:36px}.couple-portraits h2{overflow-wrap:anywhere;margin-top:12px;font-size:20px}.couple-heart{width:28px;height:26px;color:var(--coral);flex-shrink:0}.pair-date{color:#798187;margin-bottom:30px;font-size:14px}.celebrate .couple-portraits{animation:.7s both arrive}.celebrate .couple-heart{animation:.6s 3 breathe}footer{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;padding-top:32px;display:flex}footer p{color:#92999b;width:100%;font-size:12px}.footer-line{background:var(--line);flex:1;height:1px}.tiny-hearts{width:25px;height:22px;color:var(--coral)}.tiny-hearts svg{fill:none;stroke:currentColor;stroke-width:7px;width:100%;height:100%}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#17252b70;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);text-align:center;border-radius:22px;width:100%;max-width:420px;max-height:90dvh;padding:28px;overflow:auto;box-shadow:0 20px 80px #17252b30}.modal>p{color:#707c83;margin:14px 0 20px;font-size:15px}.modal form{margin-top:24px}.camera-frame{aspect-ratio:1;background:#17252b;border-radius:16px;overflow:hidden}.camera-frame video{object-fit:cover;width:100%;height:100%}.crop-preview{border-radius:8px;width:240px;height:240px;margin:24px auto;overflow:hidden}.crop-preview img{object-fit:cover;width:100%;height:100%}.modal input[type=range]{width:100%;accent-color:var(--coral);margin:15px 0 24px}.offline-banner{color:#716346;background:#f0eee4;border-radius:10px;margin-top:24px;padding:12px;font-size:13px}.loading{text-align:center;color:var(--muted);padding:90px 0}@keyframes breathe{0%,to{opacity:.65;transform:scale(.97)}50%{opacity:1;transform:scale(1.035)}}@keyframes arrive{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:none}}@media (width<=520px){.app-shell{min-height:100dvh;padding:calc(22px + env(safe-area-inset-top)) 24px calc(18px + env(safe-area-inset-bottom));border:0;border-radius:0;margin:0}.screen{padding-top:44px}h1{font-size:28px}.intro{font-size:16px}.heart-stage{margin:22px auto}.couple-portraits .large{width:100px;height:100px}.modal{padding:24px}.brand{font-size:27px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
