:root{font-family:Georgia,Times New Roman,serif;color:#5b3b22;background:#211b16;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}.app{min-height:100svh;display:flex;align-items:center;justify-content:center}.invitation{position:relative;isolation:isolate;width:min(100vw,46.025vh);width:min(100vw,46.025svh);height:min(217.27vw,100svh);overflow:hidden;background:#f2e6d1;box-shadow:0 0 90px #0005;container-type:inline-size}.plate,.scene,.rays{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.scene{opacity:0;transition:opacity 1.4s}.scene.ready{opacity:1}.scene canvas{display:block}.rays{z-index:2;overflow:hidden;mix-blend-mode:screen}header{position:absolute;z-index:3;top:4.2%;width:100%;text-align:center}.brand{font-size:3.1cqw;letter-spacing:.26em;margin:0 0 2.3cqw}.brand span{font-size:2.1cqw;letter-spacing:.23em}h1{font-weight:400}header h1{font-size:4cqw;letter-spacing:.24em;margin:0}.rule{margin:3cqw auto 0;width:12%;height:1px;background:linear-gradient(90deg,transparent,#9b7548,transparent)}.touch{position:absolute;z-index:4;left:9%;top:12%;width:82%;height:44%;touch-action:none;cursor:grab;border-radius:45%;outline-offset:-4px}.touch:active{cursor:grabbing}.touch:focus-visible{outline:1px solid #b58b50}.instruction{position:absolute;z-index:3;top:59%;width:100%;text-align:center}.ornament{font-size:4cqw;color:#997237}.instruction p{font-size:3.15cqw;margin:1.8cqw 0;letter-spacing:.035em}.instruction small{font-family:Arial,sans-serif;font-size:2.05cqw;letter-spacing:.08em;opacity:.75}.writing{position:absolute;z-index:3;left:4%;top:71.8%;width:92%;height:13.8%;pointer-events:none}.writing canvas{width:100%;height:100%;display:block}.hidden{display:none!important}.plain{text-align:center}.plain p{font-size:7.5cqw;margin:0 0 2cqw;color:var(--ink)}.plain span{display:block;text-transform:uppercase;font-size:3cqw;letter-spacing:.15em}.plain small{display:block;margin-top:2cqw;font-size:2.5cqw}.completion{position:absolute;top:84%;width:100%;text-align:center;font-style:italic;font-size:2.9cqw}footer{position:absolute;z-index:5;bottom:2%;width:100%;display:flex;flex-direction:column;align-items:center;gap:2cqw}footer button{background:transparent;border:0;color:#694a2c;padding:1.5cqw 3cqw;font-size:2.5cqw}.reveal{border-bottom:1px solid #ac88574d}footer .replay{display:flex;align-items:center;gap:1.7cqw;font-size:2.7cqw}.replay svg{width:3.3cqw;height:3.3cqw;fill:none;stroke:currentColor;stroke-width:1.2}footer p{margin:0;font-family:Arial,sans-serif;font-size:1.7cqw;letter-spacing:.28em;opacity:.65}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.studio-layout{gap:5vw;padding:30px;background:#eee6d9;align-items:flex-start}.studio{width:min(420px,100%);padding:20px;color:#4b3525}.studio h1{font-size:34px;margin:10px 0 20px}.studio p{font:14px/1.7 Arial,sans-serif}.eyebrow{letter-spacing:.22em;font-size:11px!important}.studio label{display:block;margin:20px 0;font:12px Arial,sans-serif;letter-spacing:.04em}.studio input,.studio select{display:block;width:100%;border:1px solid #b7a186;background:#fff9;padding:12px;margin-top:8px;color:#4b3525}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions button{padding:10px;border:1px solid #a58b6c;background:#fff6;color:inherit;font-size:13px}.studio a{color:inherit;font-size:14px}.studio-layout .invitation{flex-shrink:0;height:min(900px,94svh);width:min(414px,43.26svh)}@media(max-width:760px){.studio-layout{flex-direction:column;align-items:center;padding:15px;gap:20px}.studio-layout .invitation{height:100svh;width:min(100%,46.025svh)}.studio{padding:10px}}@media(prefers-reduced-motion:reduce){.scene{transition:none}}header{color:#fff2d5;text-shadow:0 1px 8px #38200f}.instruction{color:#4d301a;text-shadow:0 1px 4px #fff8}.instruction p{font-size:3.5cqw}footer button{font-size:2.9cqw}footer .replay{font-size:3cqw}:root{background:#d9cdb9}.invitation{background:#eee6d7}.fallback-decor{position:absolute;inset:0;background:linear-gradient(130deg,#fff8e4,#ece2cc 60%,#e5d8bc)}.window-outline{position:absolute;left:3%;top:12%;width:22%;height:24%;background:#fff4cc;border:5px solid #c2ac85;box-shadow:0 0 50px #ffe7a0}.fallback-crystal{position:absolute;left:28%;top:17%;width:44%;height:37%;clip-path:polygon(50% 0,100% 55%,50% 100%,0 55%);background:linear-gradient(110deg,#cfb16b55,#fff9e9,#cfb16b66)}header{color:#70512c;text-shadow:0 1px 3px #fff9}.scene{transition:opacity .6s}.instruction{top:57.5%;color:#664726;text-shadow:none}.instruction p{font-size:3.65cqw}.instruction small{font-size:2.25cqw}.turns{display:flex;justify-content:center;align-items:center;gap:2cqw;margin:3cqw auto}.turns i{width:5cqw;height:2px;background:linear-gradient(90deg,#9e763c var(--fill),#bda77d55 var(--fill))}.turns span{font:2.2cqw Arial,sans-serif;letter-spacing:.12em;margin-left:1cqw}.writing{left:7%;top:69%;width:86%;height:20%}.writing canvas{visibility:hidden}.plain{padding-top:3cqw}.plain p{font-size:7cqw;margin-bottom:5cqw}.plain span{font-size:3.5cqw}.touch{left:5%;width:90%;border-radius:0}.reveal:disabled{opacity:.45;cursor:default}footer{bottom:2.7%}.studio p{font-size:13px}footer button{min-height:26px}.studio-layout .invitation{box-shadow:0 15px 70px #6b492e25}.writing canvas{visibility:visible}.plain{position:absolute;inset:0;background:linear-gradient(#f2ead800,#f2ead8 25%)}.invitation,.fallback-decor{background:var(--wall,#eee5d6)}header{top:4.7%}header h1{font-size:4.2cqw;letter-spacing:.3em}.instruction{top:57.3%;padding:0 4%}.eternity{display:block;font-size:4.1cqw;letter-spacing:.015em}.eternity em{font-size:5.2cqw;font-weight:400}.instruction p{font:2.6cqw/1.5 Georgia,serif;margin:2cqw 0 1cqw;opacity:.8}.instruction small{font-size:2.1cqw}.turns{margin:2cqw auto}.turns i{width:14cqw}.writing{top:70%;height:18%}footer{bottom:2.3%;gap:.4cqw}footer button{font-size:2.7cqw;min-height:24px;padding:1.2cqw 3cqw;color:var(--ink)}footer .calendar{border:1px solid #a58a6055;border-radius:20px;margin:1.5cqw 0 0;padding:2cqw 5cqw;background:#fff4;font-size:2.8cqw}footer .replay{font-size:2.4cqw}.plain{background:transparent}.plain p{font-family:Segoe Script,Snell Roundhand,cursive;font-size:6.5cqw}.palettes{border:0;padding:0;margin:22px 0;display:flex;flex-wrap:wrap;gap:7px}.palettes legend{font:12px Arial,sans-serif;margin-bottom:10px}.palettes button{padding:11px 12px;border:1px solid #8f7b6355;border-radius:20px;font:11px Arial,sans-serif;color:#463d33}.palettes button[aria-pressed=true]{outline:2px solid #8e7151;outline-offset:2px}.studio{max-height:100svh;overflow:auto}.studio input:focus,.studio select:focus{outline:2px solid #9b805b}.actions button:first-child{background:#70563a;color:#fff;border-color:#70563a}.studio h1{font-size:30px}.studio-layout{gap:4vw}.studio label{margin:14px 0}.studio input,.studio select{padding:10px}.studio>p[role=status]{min-height:22px}.venue{position:absolute;top:85%;width:100%;text-align:center;font:2.4cqw Georgia,serif;margin:0;color:var(--ink);z-index:3}.invitation{background:#bba281}header{top:4.5%;color:#fff1d7;text-shadow:0 1px 12px #422a16}header h1{font-family:var(--title-font),Georgia,serif;font-size:var(--title-size,4.2cqw);letter-spacing:var(--title-spacing,.22em);font-weight:var(--title-weight,400);font-optical-sizing:none}.rule{background:linear-gradient(90deg,transparent,#ead7aa,transparent)}.instruction{top:57.3%;color:#fff1d7;text-shadow:0 1px 9px #39220e}.eternity{font-family:var(--title-font),Georgia,serif;font-size:4.7cqw}.eternity em{font-size:5.3cqw}.instruction p{font-size:2.9cqw}.instruction small{font-size:2.2cqw}.turns i{background:linear-gradient(90deg,#f7ddb0 var(--fill),#fff4 var(--fill))}.writing{isolation:isolate}.writing:before{content:"";position:absolute;z-index:-1;inset:-12% -8% -15%;background:radial-gradient(ellipse,#fff0d5e8,#fff0d5b0 45%,#fff0d500 74%);filter:blur(6px)}.writing canvas{filter:drop-shadow(0 0 2px #fff2cb40)}.plain p{font-family:var(--name-font),cursive}.plain span{font-family:var(--date-font),serif}.touch{top:12%;height:44%}.venue{top:85.5%;text-shadow:0 1px 6px #fff7df}footer{bottom:2%;gap:.3cqw}footer button{color:#fff2d7;text-shadow:0 1px 7px #2f1708}.calendar{background:#fff0dbde!important;color:#61432b!important;text-shadow:none!important;border-color:#d5bd92!important}.reveal:disabled{opacity:.55}.studio{width:min(440px,100%);max-height:100svh;padding:25px 28px}.studio h1{font-size:34px;line-height:1.1}.studio h1 em{font-weight:400;color:#96744c}.studio-layout{background:#eee9df;gap:4vw;padding:0 24px}.studio>details{border-top:1px solid #bbaa8a55;padding:15px 0}.studio summary{cursor:pointer;font:12px/1.5 Arial,sans-serif;letter-spacing:.06em;list-style:none}.studio>details>summary{font-weight:600;text-transform:uppercase}.studio summary:after{content:"+";float:right}.studio details[open]>summary:after{content:"−"}.studio .font-role{border-bottom:1px solid #bbaa8a33;padding-bottom:12px}.studio .font-role details{padding:0 2px}.studio .font-role summary{font-size:11px;color:#8c765f}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.setting-value{float:right;color:#9a7c55}.studio input[type=range]{padding:0;background:none;accent-color:#9f7b4e;cursor:pointer;border:0}.studio input[type=color]{height:38px;padding:3px}.studio .check{display:flex;align-items:center;gap:9px;line-height:1.5}.studio .check input{width:auto;margin:0}.studio-note{font-size:10px!important;color:#94826f}.studio input[hidden]{display:none}.studio .actions{margin-top:20px}.studio-layout .invitation{position:sticky;top:0;height:100svh;width:min(46.025svh,46vw);box-shadow:0 0 70px #6b492e25}@media(max-width:760px){.studio-layout{padding:0 10px}.studio{max-height:none;width:100%}.studio-layout .invitation{position:relative;width:min(46.025svh,100%);height:100svh}.field-pair{gap:10px}}.instruction{color:#5b3a21;text-shadow:0 1px 7px #fff0cf}.instruction:before{content:"";position:absolute;z-index:-1;inset:-10% 8%;background:radial-gradient(ellipse,#fff3d86b,transparent 75%)}.instruction{isolation:isolate}.instruction small{font-family:Arial,sans-serif;font-size:2.35cqw}.turns i{background:linear-gradient(90deg,#8e6639 var(--fill),#846d4250 var(--fill))}.turns span{color:#6c4d2e}footer button{color:#63432a;text-shadow:0 1px 5px #fff2dc}.reveal{border-bottom:1px solid #9977476b}footer .replay{font-size:2.7cqw}.invitation .plain{padding-top:3cqw}.plain p{font-size:8cqw}.plain span{font-size:4.5cqw}header h1{-webkit-text-stroke:var(--title-outline,0) currentColor}footer .calendar{min-height:38px;font-size:3cqw}footer{gap:.5cqw}.venue{font-size:2.8cqw}html,body,#root{width:100%;min-height:100%;margin:0}body{background:#bc9d72}.app:not(.studio-layout){display:block;width:100%;min-height:100dvh;background:#bc9d72}.app:not(.studio-layout)>.invitation{width:100%;height:100dvh;min-height:100svh;box-shadow:none;max-width:none;max-height:none}.invitation header{top:max(3.8%,env(safe-area-inset-top));left:0;padding:0 16px}.invitation header h1{font-size:calc(clamp(16px,2.8dvh,28px)*var(--title-scale,1));letter-spacing:.24em}.invitation .rule{margin:10px auto 0;max-width:80px}.invitation-copy{position:absolute;z-index:3;top:56%;bottom:max(12px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:min(88vw,47dvh,580px);display:flex;flex-direction:column;align-items:stretch;container-type:inline-size;color:var(--ink);text-align:center}.opening{flex:none;text-shadow:0 1px 5px #fff2d5}.invitation-copy .eternity{font-size:clamp(14px,5.2cqw,24px);line-height:1.3}.invitation-copy .eternity em{font-size:inherit}.invitation-copy .writing{position:relative;inset:auto;transform:none;width:100%;height:auto;aspect-ratio:1000/480;flex:none;margin:3px 0 0}.invitation-copy .writing:before{inset:-8% -6% -10%;background:radial-gradient(ellipse,#fff0d5bf,#fff0d58c 45%,#fff0d500 76%)}.invitation-copy .completion{position:static;inset:auto;width:auto;flex:none;margin:1px 0 0;font:italic clamp(12px,3.8cqw,18px)/1.3 var(--title-font),serif;letter-spacing:.025em;text-shadow:0 1px 4px #fff4d8}.invitation-copy .venue{position:static;inset:auto;width:100%;font:clamp(10px,3cqw,14px)/1.3 Georgia,serif;flex:none;margin:3px 0;max-height:2.6em;overflow:hidden}.invitation-copy footer{position:static;inset:auto;width:100%;display:flex;flex:1;min-height:0;flex-direction:column;align-items:stretch;gap:0;margin-top:10px}.footer-actions{display:flex;align-items:stretch;justify-content:center;gap:8px;flex:none}.invitation-copy footer .footer-actions button{flex:1;min-width:0;display:flex;justify-content:center;align-items:center;gap:5px;font:clamp(10px,3.3cqw,14px)/1.2 Georgia,serif;padding:8px 6px;margin:0;min-height:36px;border:1px solid #b4916155;border-radius:22px;background:#fff0dbbf!important;color:#63432a!important;text-shadow:none!important}.footer-actions svg{width:13px;height:13px;flex:none}.invitation-copy footer .reveal{align-self:center;margin-top:auto;margin-bottom:0;min-height:22px;padding:3px 8px;font:clamp(9px,2.8cqw,12px)/1.2 Georgia,serif;border:0;opacity:.65}.invitation-copy footer .reveal:disabled{opacity:.4}.gesture-note{position:absolute;z-index:4;top:35px;left:0;width:100%;text-align:center;text-shadow:0 1px 5px #fff3da}.gesture-note p{font:clamp(11px,3.4cqw,15px)/1.4 Georgia,serif;margin:4px 0}.gesture-note small{font:clamp(9px,2.8cqw,12px)/1.4 Arial,sans-serif}.gesture-note .turns{margin:8px auto}.gesture-note .turns span{font-size:10px}.gesture-note .turns i{height:2px;max-width:60px}.invitation-copy .plain{padding:16px 0 0!important;display:flex;flex-direction:column;justify-content:space-around;gap:8px}.invitation-copy .plain p{font-size:10cqw;margin:0;line-height:1.2}.invitation-copy .plain span{font-size:6.5cqw;text-transform:none;letter-spacing:.02em}.studio-layout .invitation{container-type:inline-size}.studio-layout .invitation-copy{width:min(88%,47dvh)}@media(max-height:600px){.invitation-copy{top:55%;bottom:max(6px,env(safe-area-inset-bottom));width:min(88vw,46dvh)}.invitation-copy footer{margin-top:5px}.invitation-copy footer .footer-actions button{min-height:30px;padding:5px}.invitation-copy .eternity{font-size:14px}}.gold-dust{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}.gold-dust i{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);border-radius:50%;background:#f5dfb4;box-shadow:0 0 2.5px .4px #ebd2a373;animation:dust-float var(--duration) ease-in-out var(--delay) infinite alternate,dust-spark var(--spark) ease-in-out var(--delay) infinite}@keyframes dust-float{0%{transform:translate3d(0,35px,0)}to{transform:translate3d(var(--drift),-55px,0)}}@keyframes dust-spark{0%,to{opacity:.12;filter:brightness(.8)}50%{opacity:.85;filter:brightness(1.7)}}@media(prefers-reduced-motion:reduce){.gold-dust i{animation:none;opacity:.25}}.invitation [hidden]{display:none!important}.gesture-note small{display:none}.gesture-note .turns{opacity:.7}.gesture-note .turns span{font-size:9px}.gold-dust i{animation-timing-function:ease-in-out}.invitation .footer-actions{opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--actions-duration,.5s) ease,visibility 0s linear var(--actions-duration,.5s)}.invitation .footer-actions[data-visible=true]{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--actions-duration,.5s) ease}.configuration-error{padding:32px;font:16px/1.5 Georgia,serif;color:#4b3525}@media(prefers-reduced-motion:reduce){.invitation .footer-actions{transition:none}}.scene{transition:opacity .18s}.static-jewel{position:absolute;left:50%;top:16.56%;transform:translate(-50%);height:37.76dvh;width:19.23dvh;background-position:48.67% 26.61%;background-size:235.08% 264.52%;clip-path:polygon(50% 0,100% 52.7%,50% 100%,0 52.7%);pointer-events:none}.publication{padding:22px 0;border-top:1px solid #b59a6b66;border-bottom:1px solid #b59a6b66;margin:24px 0}.publication h2{font-size:25px;margin:0 0 10px}.publication form button,.publication .publish-primary{background:#542e15;color:#fff7e9;border:1px solid #542e15;border-radius:10px;padding:14px 18px;cursor:pointer}.publication a{display:inline-block;margin-top:14px}.publication button:disabled{opacity:.5;cursor:wait}
