:root{--paper:#f7f6f0;--ink:#323e33;--muted:#8b9084;--sage:#71846a;--line:#e2e3d8;--serif:'Noto Serif KR',Georgia,'Batang',serif;--sans:'DM Sans',-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic',sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}a{color:inherit;text-decoration:none}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible{outline:2px solid var(--sage);outline-offset:5px}input:focus,textarea:focus{outline:2px solid #a5b499;outline-offset:2px}button{color:inherit} [hidden]{display:none!important}em{font-style:normal;color:var(--sage)}.site-header{max-width:1440px;margin:auto;height:108px;padding:0 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-family:Georgia,serif;font-size:28px;letter-spacing:-1.6px;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.wordmark-flower{font-size:28px;line-height:1;color:var(--sage);padding-top:3px}.header-note{font-size:9px;letter-spacing:2.5px;color:var(--muted);margin-right:38px}.text-link{font-size:12px;color:#67745e}.text-link span{margin-left:12px}.guest-layout{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1.08fr 1fr;gap:100px;padding:70px 40px 60px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--sage);display:flex;align-items:center;gap:11px}.tiny-line{height:1px;width:23px;background:var(--sage)}.intro-panel h1{font-family:var(--serif);font-size:43px;font-weight:400;line-height:1.65;letter-spacing:-2px;margin:23px 0 19px}.intro-description{font-size:13px;color:#878b7e;line-height:1.95;margin:0}.keepsake{height:288px;position:relative;margin-top:4px;display:flex;align-items:center;justify-content:center}.keepsake-orbit{width:265px;height:235px;border:1px solid #e2e3d8;border-radius:50%;position:absolute;transform:rotate(-24deg)}.sample-note{width:286px;height:184px;padding:25px 27px;background:#e7ebdf;position:relative;transform:rotate(-7deg);box-shadow:4px 12px 30px #46543d0a;border:1px solid #dde2d4}.sample-label{font-size:8px;letter-spacing:2px;color:#849279}.sample-note p{font-family:var(--serif);font-size:14px;line-height:1.95;margin:14px 0;color:#53634b}.sample-sign{font-size:9px;color:#87917f}.note-flower{position:absolute;right:19px;bottom:17px;font-size:24px;color:#9caa8d}.petal{position:absolute;z-index:1;color:#a1ae90}.p1{font-size:60px;right:26px;top:21px;transform:rotate(15deg)}.p2{font-size:28px;left:40px;bottom:40px;color:#c3ad96}.keepsake-caption{position:absolute;bottom:4px;font-size:9px;letter-spacing:.3px;color:#a2a394}.couple-info{border-top:1px solid var(--line);display:flex;align-items:center;gap:17px;padding-top:24px;margin-top:21px}.couple-flower{font-size:37px;color:#9eab8f}.couple-info strong{font-family:var(--serif);font-size:14px;font-weight:500}.couple-info p{font-size:10px;color:var(--muted);margin:7px 0 0}.form-panel{background:#fdfcf8;border:1px solid #e7e7dc;border-radius:3px;padding:32px 34px 26px;box-shadow:0 8px 40px #39472b03;align-self:start}.form-heading{display:flex;justify-content:space-between;align-items:center}.section-number{font-size:9px;letter-spacing:1.8px;color:#919b85}.small-flower{color:#9ca98e;font-size:23px}.form-panel h2{font-family:var(--serif);font-size:23px;font-weight:500;letter-spacing:-.8px;margin:20px 0 10px}.form-description{font-size:10px;color:#999d91;margin:0 0 30px;line-height:1.7}label,legend{font-size:12px;font-weight:500}label>span:not(.swatch),legend>span{font-size:8px;letter-spacing:1.1px;color:#a0a494;margin-left:8px}input:not([type=radio]),textarea{width:100%;border:1px solid #e4e5dc;border-radius:3px;background:#fffefa;color:#424d3b;padding:13px 14px;font-size:12px;margin-top:10px;line-height:1.7}input::placeholder,textarea::placeholder{color:#b0b2a6}textarea{resize:vertical;min-height:130px}.field-hint{font-size:9px;color:#a4a699;margin-top:8px}.label-row{display:flex;align-items:center;justify-content:space-between;margin-top:26px}.label-row>span{font-size:9px;color:#9da38e}.theme-field{padding:0;margin:23px 0 0;border:0}.theme-field legend{margin-bottom:14px}.theme-options{display:flex;gap:20px}.theme-option{display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;position:relative}.theme-option input{position:absolute;opacity:0;width:32px;height:32px;margin:0}.theme-option>span:last-child{font-size:9px;letter-spacing:0;margin:0;color:#999e8e}.swatch{display:block;width:28px;height:28px;border-radius:50%;border:4px solid #fdfcf8;outline:1px solid transparent;transition:transform .2s,outline .2s}.theme-option input:checked+.swatch{outline-color:#7b8a6a;transform:scale(1.08)}.theme-option input:focus-visible+.swatch{outline:2px solid #53634b;outline-offset:3px}.sage{background:#e4eadc}.rose{background:#f1e2df}.butter{background:#f2ebd3}.cloud{background:#e2e8ee}.primary-button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px 18px;border:1px solid #71846a;background:#71846a;color:#fffdf8;font-size:12px;border-radius:3px;transition:background .2s}.primary-button:hover{background:#5e7257}.primary-button>span:last-child{font-size:18px;line-height:1}.error-message{font-size:11px;color:#ab6259;line-height:1.7;min-height:0;margin:15px 0 10px}.error-message:empty{margin-top:24px}.privacy-note{text-align:center;font-size:9px;color:#a6a99c;line-height:1.9;margin:14px 0 0}.site-footer{max-width:1264px;border-top:1px solid var(--line);margin:auto;padding:24px 0 29px;display:flex;justify-content:space-between;color:#a0a493;font-size:9px}.site-footer>span:first-child{letter-spacing:1.6px;font-size:8px}.footer-star{color:#929f80;font-size:14px;margin-left:6px}.success-view{text-align:center;padding-top:25px}.success-flower{display:block;font-size:68px;color:#8e9f7d;margin-bottom:18px}.success-view>.section-number{display:block}.success-view>p{font-size:12px;line-height:2;color:#959c89}.sent-preview{padding:28px 22px;margin:28px 0;border:1px solid #d8e0ce;transform:rotate(-3deg);border-radius:2px}.sent-preview p{font-family:var(--serif);font-size:17px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}.sent-preview span{font-size:11px;color:#7c8971}.success-view .success-caption{font-size:10px;margin-bottom:25px}
/* Projector wall */
.screen-page{height:100dvh;min-height:640px;overflow:hidden;display:flex;flex-direction:column}.screen-header{display:flex;justify-content:space-between;align-items:center;padding:24px 4%;flex-shrink:0}.screen-header .wordmark{font-size:26px}.live-indicator{display:flex;align-items:center;gap:7px;font-size:9px;letter-spacing:1px;color:#89967e}.status-dot{width:6px;height:6px;display:inline-block;background:#c4ad7d;border-radius:50%}.status-dot.connected{background:#8da67c;box-shadow:0 0 0 4px #8da67c15}.icon-button{border:1px solid #dfe3d6;background:transparent;border-radius:50%;width:32px;height:32px;font-size:20px;color:#8c997e}.wall-main{flex:1;position:relative;min-height:0;overflow:hidden}.wall-heading{text-align:center;position:relative;z-index:2;padding-top:12px;pointer-events:none}.wall-heading .eyebrow{justify-content:center;font-size:9px;letter-spacing:2.5px}.wall-heading h1{font-family:var(--serif);font-weight:400;font-size:36px;letter-spacing:-1.4px;margin:17px 0 13px}.wall-heading>p{font-size:10px;color:#989d8f}.heading-separator{font-size:13px;color:#9eac8e;margin:0 13px}.message-wall{--wall-layout:floating;position:absolute;top:155px;left:4%;right:4%;bottom:18px;z-index:2;overflow:hidden}.wall-card{position:absolute;width:260px;animation:float-note var(--duration,16s) ease-in-out infinite;animation-delay:var(--delay,0s);transition:left 1.5s ease,top 1.5s ease;will-change:transform}.card-face{height:100%;padding:23px 23px 18px;border:1px solid #42563412;border-radius:5px 5px 16px 5px;box-shadow:0 14px 34px #37482c12,0 2px 4px #37482c04;overflow:hidden;position:relative;animation:letter-in .95s cubic-bezier(.2,.75,.2,1) both;animation-delay:var(--entry-delay,0ms)}.card-face::before{content:'WITH LOVE';font-size:7px;letter-spacing:2px;color:#77836f;opacity:.7}.is-leaving .card-face{animation:letter-out .5s ease both}.wall-card p{font-family:var(--serif);font-size:16px;line-height:1.85;letter-spacing:-.3px;margin:15px 0 16px;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.wall-card .card-author{font-size:10px;opacity:.6}.wall-card .card-flower{position:absolute;right:16px;bottom:14px;font-size:23px;opacity:.3}.wall-empty{position:absolute;inset:155px 10% 25px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.wall-empty>span{font-size:75px;color:#acb69c;font-weight:300}.wall-empty h2{font-family:var(--serif);font-size:23px;font-weight:400;letter-spacing:-.6px}.wall-empty p{font-size:12px;color:#9ba18e;line-height:2}.ambient{position:absolute;border-radius:50%;filter:blur(60px);pointer-events:none;opacity:.35}.ambient-one{width:380px;height:280px;background:#e5e9d8;top:100px;left:5%}.ambient-two{width:300px;height:240px;background:#eee3da;bottom:20px;right:5%}.wall-decoration{position:absolute;color:#dce2ce;pointer-events:none}.flower-one{font-size:120px;left:5%;top:5px;transform:rotate(16deg)}.flower-two{font-size:70px;right:7%;bottom:10px}.wall-footer{border-top:1px solid var(--line);margin:0 4%;padding:18px 0 22px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;gap:20px}.wall-footer-copy p{font-family:var(--serif);font-size:14px;margin:11px 0;color:#7e8a72}.message-total{font-size:9px;color:#a1a792}.qr-invitation{display:flex;gap:21px;align-items:center}.qr-invitation strong{font-size:12px;font-weight:500}.qr-invitation strong span{margin-left:10px;color:#8e9c7d}.qr-invitation p{font-size:10px;color:#999f8e;margin:8px 0}.join-url{font-size:9px;color:#8c997d;word-break:break-all;display:block;max-width:300px}.qr-invitation img{display:block;width:100px;height:100px;border-radius:5px;border:1px solid #e1e6d8;background:#fff}.demo-badge{background:#eee9dc;border-radius:4px;padding:5px 8px;font-size:9px;color:#9e8d68;margin-left:10px}.spotlight{position:fixed;inset:0;z-index:10;background:#f7f6f0c9;backdrop-filter:blur(3px);display:flex;flex-direction:column;justify-content:center;align-items:center;animation:appear .5s ease;pointer-events:none}.spotlight>article{max-width:500px;width:75%;max-height:calc(100dvh - 140px);overflow-y:auto;overscroll-behavior:contain;pointer-events:auto;flex-shrink:0;margin:25px 0;position:relative;padding:38px;box-shadow:0 24px 90px #65745125;border:1px solid #71846a22;border-radius:6px 6px 25px 6px;transform:rotate(-3deg);animation:arrival-letter .85s cubic-bezier(.16,.8,.24,1) both}.spotlight>article p{font-family:var(--serif);font-size:clamp(18px,2.4vw,28px);line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 23px}.spotlight>article span{font-size:13px;opacity:.6}.spotlight .card-author{display:block;padding-right:24px;overflow-wrap:anywhere}.spotlight>p{font-size:12px;color:#8f9c80}.spotlight .card-flower{position:absolute;bottom:20px;right:25px;font-size:34px;opacity:.3}@keyframes float-note{0%,100%{transform:translate3d(calc(-1 * var(--drift-x,16px)),0,0) rotate(var(--rotation,-3deg)) scale(var(--depth,1))}25%{transform:translate3d(0,calc(-1 * var(--drift-y,24px)),0) rotate(calc(var(--rotation,-3deg) + 1.5deg)) scale(var(--depth,1))}50%{transform:translate3d(var(--drift-x,16px),0,0) rotate(calc(var(--rotation,-3deg) + 2deg)) scale(var(--depth,1))}75%{transform:translate3d(0,var(--drift-y,24px),0) rotate(calc(var(--rotation,-3deg) - 1deg)) scale(var(--depth,1))}}@keyframes letter-in{from{opacity:0;transform:translateY(38px) rotate(7deg) scale(.88)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}@keyframes letter-out{to{opacity:0;transform:translateY(-28px) rotate(-5deg) scale(.93)}}@keyframes appear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
/* Admin */
.admin-main{max-width:960px;margin:60px auto;padding:0 28px}.admin-main h1{font-family:var(--serif);font-size:30px;font-weight:400}.admin-main>p{font-size:12px;color:#969d88;line-height:1.8}.admin-login{max-width:460px;display:grid;gap:12px;margin-top:32px}.admin-login input{margin:0}.admin-toolbar{display:flex;justify-content:space-between;gap:15px;align-items:center;margin:30px 0 20px;font-size:13px}.admin-toolbar>div{display:flex;gap:8px;flex-wrap:wrap}.secondary-button{background:#fffefa;border:1px solid #dce1d2;border-radius:3px;padding:9px 12px;font-size:11px}.admin-messages{display:grid;gap:12px}.admin-card{padding:22px;border:1px solid #e0e5d8;border-radius:3px;display:flex;align-items:center;justify-content:space-between;gap:20px}.admin-card.is-hidden{opacity:.55;background:#eaeae3}.admin-card p{font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.admin-card time{font-size:10px;color:#8c977e}.admin-card strong{font-size:12px;margin-right:12px}.admin-card .secondary-button{white-space:nowrap;flex-shrink:0}.admin-card>div{min-width:0}.admin-card .hidden-label{font-size:10px;color:#a06d60;margin-left:8px}
@media(min-width:1600px){.wall-heading h1{font-size:45px}.wall-card p{font-size:19px}.wall-heading{padding-top:25px}.message-wall{top:180px}.wall-footer{padding:24px 0 28px}.qr-invitation img{width:125px;height:125px}.qr-invitation strong{font-size:16px}.wall-footer-copy p{font-size:17px}}
@media(max-width:1000px){.guest-layout{gap:45px;padding:50px 35px}.intro-panel h1{font-size:35px}.form-panel{padding:27px}.header-note{display:none}.site-footer{margin:0 6%}.keepsake{transform:scale(.9);margin-left:-20px;margin-right:-20px}.wall-heading h1{font-size:30px}.wall-footer-copy p{font-size:12px}.qr-invitation{gap:12px}}
@media(max-width:700px){.site-header{height:77px;padding:0 7%}.wordmark{font-size:26px}.screen-link{font-size:10px}.guest-layout{display:block;padding:35px 7% 34px}.intro-panel h1{font-size:34px;line-height:1.6;margin:18px 0 14px;letter-spacing:-1.5px}.eyebrow{font-size:8px;letter-spacing:1.6px}.intro-description{font-size:12px}.keepsake{display:none}.couple-info{margin:24px 0 28px;padding-top:18px;gap:12px}.couple-info strong{font-size:12px}.couple-info p{font-size:9px}.couple-flower{font-size:30px}.form-panel{padding:25px 23px}.form-panel h2{font-size:21px;margin-top:16px}.form-description{font-size:11px;margin-bottom:25px}input:not([type=radio]),textarea{font-size:16px}label,legend{font-size:13px}.primary-button{font-size:14px}.field-hint,.privacy-note{font-size:10px}.site-footer{padding:22px 0 24px;display:flex;flex-direction:column;align-items:center;gap:11px;font-size:8px}.site-footer>span:first-child{font-size:7px}.theme-options{gap:24px}.success-view{padding-top:10px}.screen-header{padding:20px 5%}.screen-header .wordmark{font-size:23px}.live-indicator{font-size:8px}.demo-badge{font-size:7px;margin-left:0}.wall-heading{padding:10px 15px 0}.wall-heading .eyebrow{font-size:7px;letter-spacing:1.2px}.wall-heading h1{font-size:23px;margin:16px 0 10px;letter-spacing:-1px}.wall-heading>p{font-size:8px;line-height:1.9}.heading-separator{margin:0 7px}.message-wall{top:125px;left:5%;right:5%;bottom:15px}.card-face{padding:17px}.wall-card p{font-size:14px;margin:12px 0}.wall-empty{top:120px;inset-inline:7%}.wall-empty h2{font-size:18px}.wall-empty p{font-size:10px}.wall-footer{margin:0 5%;padding:14px 0 18px}.wall-footer-copy{display:none}.qr-invitation{width:100%;justify-content:space-between}.qr-invitation strong{font-size:11px}.qr-invitation p{font-size:8px;max-width:190px;line-height:1.7}.qr-invitation img{width:90px;height:90px}.join-url{max-width:195px;font-size:8px}.screen-page{min-height:620px}.flower-one{font-size:70px;top:15px}.flower-two{font-size:50px}.admin-main{margin:35px auto;padding:0 7%}.admin-main h1{font-size:25px}.admin-toolbar{align-items:flex-start;flex-direction:column}.admin-card{padding:16px;gap:12px}.admin-card p{font-size:12px}.spotlight>article{padding:27px}.spotlight>article p{font-size:20px}}
.screen-controls{display:flex;gap:8px}.demo-arrival{border:1px solid #cbd5bf;background:#fffdf8c9;color:#6d805f;border-radius:20px;padding:6px 11px;margin-top:8px;font-size:10px}.demo-arrival:hover{background:#e4eadc}.demo-arrival span{margin-left:8px}.floating-petals{position:absolute;inset:0;overflow:hidden;pointer-events:none}.floating-petal{position:absolute;bottom:-24px;left:var(--start);width:var(--petal-size);height:calc(var(--petal-size) * .6);background:#b9c6a3;border-radius:80% 0 80% 0;opacity:0;animation:petal-flight var(--fall-duration) linear infinite;animation-delay:var(--fall-delay)}.floating-petal:nth-child(3n){background:#d8b7aa;border-radius:50% 50% 50% 0}.floating-petal:nth-child(4n){background:#d4c896;filter:blur(1px)}.ambient-one{animation:ambient-wander 24s ease-in-out infinite alternate}.ambient-two{animation:ambient-wander 30s ease-in-out -12s infinite alternate-reverse}.flower-one{animation:flower-turn 50s linear infinite}.flower-two{animation:flower-turn 42s linear infinite reverse}.status-dot.connected{animation:live-breathe 3s ease-in-out infinite}.arrival-halo{position:absolute;width:530px;height:530px;max-width:90vw;max-height:90vw;border-radius:50%;background:radial-gradient(circle,#e2e9cf88,transparent 68%);animation:halo-open 1.6s ease-out both;pointer-events:none}.arrival-halo::before,.arrival-halo::after{content:'';position:absolute;inset:0;border:1px solid #b2c49855;border-radius:50%;animation:halo-ring 2s ease-out both}.arrival-halo::after{animation-delay:.3s}.spotlight>.section-number,.spotlight>p{position:relative}.motion-paused .wall-card,.motion-paused .floating-petal,.motion-paused .ambient,.motion-paused .wall-decoration,.motion-paused .status-dot{animation-play-state:paused!important}.motion-paused .card-face,.motion-paused .spotlight,.motion-paused .spotlight>article,.motion-paused .arrival-halo,.motion-paused .arrival-halo::before,.motion-paused .arrival-halo::after{animation:none!important}.motion-paused .wall-card{transition:none}@keyframes petal-flight{0%{opacity:0;transform:translate3d(0,30px,0) rotate(0)}12%{opacity:.55}86%{opacity:.4}100%{opacity:0;transform:translate3d(var(--sway),-100vh,0) rotate(420deg)}}@keyframes ambient-wander{to{transform:translate(100px,-45px) scale(1.25);opacity:.55}}@keyframes flower-turn{to{transform:rotate(376deg)}}@keyframes live-breathe{50%{box-shadow:0 0 0 7px #8da67c08}}@keyframes arrival-letter{from{opacity:0;transform:translateY(90px) rotate(-12deg) scale(.78)}65%{opacity:1;transform:translateY(-8px) rotate(-1deg) scale(1.02)}to{opacity:1;transform:translateY(0) rotate(-3deg) scale(1)}}@keyframes halo-open{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1.1)}}@keyframes halo-ring{from{opacity:.8;transform:scale(.45)}to{opacity:0;transform:scale(1.35)}}
@media(max-width:700px){.screen-header .wordmark{font-size:20px}.screen-controls{gap:5px}.screen-controls .icon-button{width:29px;height:29px;font-size:16px}.demo-arrival{font-size:9px;padding:5px 8px}.arrival-halo{width:320px;height:320px}}
@media(max-width:900px),(max-height:700px){
  .screen-page{height:auto;min-height:100dvh;overflow-x:clip;overflow-y:auto}
  .screen-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:20px 5%}
  .screen-header>.wordmark{grid-area:1/1}.screen-controls{grid-area:1/2}.live-indicator{grid-area:2/1/3/3;justify-content:center;flex-wrap:wrap;line-height:1.6}
  .wall-main{flex:none}.wall-heading{padding:12px 6% 0}.wall-heading h1{font-size:clamp(23px,4vw,34px);line-height:1.6;overflow-wrap:anywhere}.wall-heading>p{line-height:1.9;overflow-wrap:anywhere}.wall-heading .eyebrow{line-height:1.8;flex-wrap:wrap}
  .message-wall{--wall-layout:reading;position:relative;inset:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));align-items:start;gap:24px;padding:32px 24px;overflow:visible}
  .wall-card{position:relative;width:auto;height:auto;left:auto;top:auto;min-width:0;animation:none;transition:none;will-change:auto}
  .card-face{height:auto;min-height:160px;padding:24px;animation:appear .55s ease both}
  .wall-card p{display:block;overflow:visible;-webkit-line-clamp:unset;font-size:16px;line-height:1.9;margin:16px 0 20px}.wall-card .card-author{display:block;padding-right:26px;overflow-wrap:anywhere}
  .wall-empty{position:relative;inset:auto;min-height:260px;padding:24px}.wall-empty h2,.wall-empty p{overflow-wrap:anywhere}
  .wall-footer{flex-wrap:wrap;gap:20px;margin-inline:5%}.wall-footer-copy{display:block;width:100%}.wall-footer-copy>.section-number,.wall-footer-copy>p{display:none}
  .qr-invitation{width:100%;min-width:0;gap:16px}.qr-invitation>div{flex:1;min-width:0}.qr-invitation>a{flex-shrink:0}.qr-invitation strong,.qr-invitation p{overflow-wrap:anywhere}.join-url{max-width:100%}
  .floating-petals{display:none}.spotlight>article{width:88%;padding:22px;max-height:calc(100dvh - 120px);transform:none;animation:appear .45s ease both}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.floating-petals,.arrival-halo{display:none}}
