/* Olive / lime wedding invitation — mobile first */
:root{--bg:#474a37;--lime:#d8e592;--cream:#f7f5e9;--muted:#d0d2be;--line:rgba(216,229,146,.23);--red:#e60012}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#25281f;color:var(--cream);font:16px/1.8 'Noto Sans KR',sans-serif}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--lime);outline-offset:5px}h1,h2,h3,p{margin:0}h1,h2,.family,.invitation-copy,.sign{font-family:'Gowun Batang',serif}h2{font-size:29px;font-weight:400;line-height:1.6;letter-spacing:-1px}h3{font-size:16px;font-weight:500}#invitation{max-width:480px;margin:auto;background-color:var(--bg);background-image:radial-gradient(rgba(216,229,146,.12) .7px,transparent .9px);background-size:19px 19px;box-shadow:0 0 100px #0005;overflow:hidden}.preview-label{text-align:center;font-size:12px;line-height:30px;background:var(--lime);color:var(--bg);letter-spacing:.1px}.desktop-note{position:fixed;left:max(30px,calc(50% - 550px));top:35%;color:var(--lime);text-align:left}.desktop-note .star{font-size:65px}.desktop-note p{font:32px/1.3 'Gowun Batang',serif;margin:22px 0}.desktop-note>span:last-child{font-size:11px;line-height:2;letter-spacing:2px;opacity:.6}.hero{height:calc(100svh - 30px);min-height:660px;max-height:960px;position:relative;background:#e1e2d8;isolation:isolate;overflow:hidden}.hero>img{width:100%;height:100%;object-fit:cover;object-position:center 53%}.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#222a1408 50%,#262e1840 75%,#28311cb8 100%);z-index:0}.hero-top{position:absolute;z-index:1;top:7%;width:100%;text-align:center;color:var(--bg)}.hero-top>span{font-size:11px;letter-spacing:3px}.hero-top p{font:38px/1.4 'Gowun Batang',serif;letter-spacing:-2px;margin-top:15px}.hero-top em{font-style:normal}.hero-top i{display:block;font-size:33px;line-height:1;margin-top:22px;font-style:normal}.hero-bottom{position:absolute;z-index:1;bottom:24px;left:0;right:0;text-align:center}.hero-bottom h1{font-size:29px;letter-spacing:5px;font-weight:400}.hero-bottom b{font-weight:400;color:var(--lime);margin:0 8px}.hero-bottom p{font-size:11px;letter-spacing:2px;margin-top:5px}.scroll{display:flex;align-items:center;flex-direction:column;gap:0;margin:24px auto 0;width:max-content;color:var(--lime)}.scroll span:first-child{font-size:9px;letter-spacing:2px}.scroll span:last-child{font-size:24px;animation:bounce 2s infinite}.section{text-align:center;padding:67px 32px}.eyebrow{color:var(--lime);font-size:11px;letter-spacing:2.8px;line-height:1.7;margin-bottom:16px}.invitation{padding-top:90px;padding-bottom:68px}.tiny-star{color:var(--lime);font-size:35px;margin:28px 0}.family{line-height:2.3;font-size:16px}.family span,.sign span{margin:0 5px}.family small{font-size:13px;margin:0 5px}.family strong{font-size:18px;font-weight:400}.invitation-copy{font-size:17px;line-height:2.1;margin-top:39px}.invitation-copy p+p{margin-top:26px}.sign{font-size:16px;margin-top:36px}.divider{display:flex;align-items:center;justify-content:center;gap:17px;color:var(--lime);font-size:14px;margin:0 32px}.divider:before,.divider:after{content:'';width:45px;height:1px;background:var(--line)}.button{min-height:52px;border:1px solid transparent;display:flex;align-items:center;justify-content:center;gap:12px;border-radius:3px;font-size:15px;transition:background .2s,color .2s;width:100%;margin-top:28px;padding:12px 20px}.button>span:last-child{margin-left:auto}.contact .button{max-width:290px;margin:29px auto 0}.contact .button>span{margin:0;font-size:20px}.outline{background:#474a37;border-color:var(--line)}.outline:hover{background:var(--lime);color:var(--bg)}.lime{background:var(--lime);color:var(--bg)}.lime:hover{background:#e6f1b3}.red{background:var(--red);color:white}.red:hover{background:var(--lime);color:var(--bg)}.subtitle{font-size:15px;line-height:1.9;color:var(--muted);margin-top:16px}.gallery-section{padding-left:0;padding-right:0}.gallery-section>h2,.gallery-section>.eyebrow{padding:0 25px}.gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin-top:33px;padding:0 32px;scrollbar-width:none}.gallery::-webkit-scrollbar{display:none}.photo{padding:0;border:0;flex:0 0 91%;height:440px;scroll-snap-align:center;background:#e3e5da;overflow:hidden;border-radius:150px 150px 3px 3px}.photo img{height:100%;width:100%;object-fit:cover;object-position:center 70%;display:block}.photo:nth-child(2){border-radius:3px}.gallery-nav{display:flex;align-items:center;justify-content:space-between;margin:19px 33px 0}.gallery-nav button,.lightbox-nav button{background:none;border:1px solid var(--line);width:42px;height:42px;border-radius:50%;font-size:20px;color:var(--lime)}.gallery-nav button:hover{background:var(--lime);color:var(--bg)}#gallery-count{font-size:14px;letter-spacing:2px}#gallery-count b{font-weight:400;opacity:.4}.muted{color:var(--muted)}.caption{font-size:12px;margin-top:19px}.calendar{margin-top:30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 2px}.month{font-size:15px;letter-spacing:3px;margin-bottom:20px;color:var(--lime)}.month span{opacity:.6;font-size:12px}.week,.days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.week{font-size:13px;color:var(--muted);margin-bottom:12px}.days>span{display:grid;place-items:center;aspect-ratio:1;font-size:14px}.days>span:nth-child(7n+1){color:#ffaaa8}.days .wedding-day{background:var(--red);color:white!important;border-radius:50%;position:relative;font-weight:600}.countdown{display:flex;justify-content:center;align-items:flex-start;gap:13px;margin-top:33px}.countdown div{width:57px}.countdown strong{display:block;color:var(--lime);font:33px/1.3 'Gowun Batang',serif}.countdown span{font-size:10px;letter-spacing:1.2px;opacity:.65}.countdown i{font:23px 'Gowun Batang',serif;opacity:.35;margin-top:2px}.day-message{font-size:14px;margin-top:22px}.day-message strong{color:var(--lime)}.map-placeholder{background:#e6e7dc;color:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:220px;margin-top:28px;border-radius:3px}.map-placeholder>span{font-size:38px;line-height:1.4}.map-placeholder strong{font-weight:500;margin-top:8px}.map-placeholder p{font-size:12px;margin-top:5px}.map-open{font-size:13px;margin-top:17px;border-bottom:1px solid #474a3760}.map-buttons{display:grid;grid-template-columns:1fr 1fr;margin-top:12px;gap:10px}.map-buttons a{font-size:13px;border:1px solid var(--line);padding:11px 4px;border-radius:3px}.map-buttons a:hover{color:var(--lime)}.directions .button{margin-top:12px}.travel-row{display:flex;text-align:left;gap:17px;margin-top:28px;padding-top:25px;border-top:1px solid var(--line)}.travel-row>span{color:var(--lime);font-size:12px;margin-top:3px}.travel-row p{font-size:14px;line-height:1.9;color:var(--muted);margin-top:8px}.venue-cards{margin-top:30px;display:grid;gap:20px}.venue-cards article{background:var(--cream);color:var(--bg);text-align:left;border-radius:3px;overflow:hidden}.venue-photo{height:155px;background:#dddfd0;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#626750}.venue-photo span{font:38px 'Gowun Batang',serif}.venue-photo p{font-size:12px;margin-top:8px}.venue-copy{padding:20px 23px}.venue-copy p{font-size:13px;opacity:.7;margin-top:7px}.accounts details{margin-top:12px;border:1px solid var(--line);border-radius:3px;text-align:left;background:#474a37}.accounts details:first-of-type{margin-top:29px}.accounts summary{list-style:none;padding:16px 20px;cursor:pointer;font-size:15px;display:flex;justify-content:space-between}.accounts summary::-webkit-details-marker{display:none}.accounts summary span{color:var(--lime)}.accounts details[open] summary span{transform:rotate(45deg)}.account-content{font-size:13px;padding:0 20px 20px;color:var(--muted)}.copy-account{display:block;margin-top:14px;border:1px solid var(--line);padding:7px 12px;border-radius:3px;background:transparent}.guestbook{padding-left:26px;padding-right:26px}#guestbook-form{background:#ffffff09;border:1px solid var(--line);padding:17px;border-radius:3px;margin-top:29px;text-align:left}input,textarea{width:100%;background:#ffffff08;border:1px solid var(--line);border-radius:3px;padding:12px;color:var(--cream);font-size:14px;outline:none}input:focus,textarea:focus{border-color:var(--lime)}input::placeholder,textarea::placeholder{color:#c2c6b3}textarea{resize:vertical;min-height:72px}#guestbook-form input{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:0 0 11px}#guestbook-form textarea{border:0;background:none;padding:14px 0 0;min-height:108px}.form-bottom{display:flex;align-items:center;justify-content:space-between}.form-bottom span{font-size:11px;color:var(--muted)}.form-bottom button{border:0;background:var(--lime);color:var(--bg);padding:9px 14px;border-radius:3px;font-size:13px}.notes{columns:2;column-gap:14px;margin-top:33px;text-align:left}.note{display:inline-block;width:100%;break-inside:avoid;padding:24px 16px 17px;margin:0 0 19px;color:#3c4332;position:relative;box-shadow:2px 5px 8px #18201622;overflow-wrap:anywhere}.note:before{content:'';position:absolute;top:-6px;left:35%;height:14px;width:30%;background:#ffffff5c}.note p{font:16px/1.9 'Gowun Batang',serif;white-space:pre-wrap}.note small{display:block;font-size:12px;margin-top:18px}.note .sample{font-size:10px;opacity:.6;margin-top:5px}footer{text-align:center;background:#393e2d;padding:50px 27px 39px}.footer-star{font-size:45px;color:var(--lime)}footer h2{font-size:22px;margin-top:15px}footer>p{font-size:10px;letter-spacing:3px;margin-top:12px;color:var(--lime)}.share-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:29px 0}.share-buttons button{font-size:13px;padding:13px 7px;background:transparent;border:1px solid var(--line);border-radius:3px}.share-buttons button:hover{background:var(--lime);color:var(--bg)}footer small{font-size:11px;opacity:.5}.sheet{color:var(--cream);background:var(--bg);border:1px solid var(--line);border-bottom:0;border-radius:22px 22px 0 0;width:min(480px,100%);max-width:480px;max-height:92svh;padding:32px 26px 22px;margin:auto auto 0;overflow-y:auto}.sheet[open]{animation:slideup .3s ease-out}.sheet::backdrop,.lightbox::backdrop{background:#11170eaa;backdrop-filter:blur(3px)}.sheet h2{font-size:25px}.sheet .eyebrow{font-size:10px;margin-bottom:8px}.close{position:absolute;right:17px;top:14px;border:0;background:transparent;color:var(--lime);font-size:30px;width:44px;height:44px;line-height:1}.handle{width:35px;height:4px;background:#d8e59250;border-radius:9px;position:absolute;top:10px;left:calc(50% - 17px)}.modal-desc{font-size:13px;color:var(--muted);margin:7px 0 22px}.sheet fieldset{padding:0;margin:16px 0;border:0}.sheet legend,.sheet form>label,.form-grid>label{display:block;font-size:13px;color:var(--muted);margin-bottom:8px}.sheet em{color:var(--lime);font-style:normal}.segmented{display:flex;gap:9px}.segmented label{flex:1;position:relative;cursor:pointer}.segmented input{position:absolute;opacity:0;width:1px}.segmented span{display:block;text-align:center;padding:9px;border:1px solid var(--line);border-radius:3px;font-size:14px}.segmented input:checked+span{background:var(--lime);color:var(--bg)}.segmented input:focus-visible+span{outline:2px solid var(--cream)}.radio-row{display:flex;gap:28px;font-size:14px}.radio-row label{display:flex;align-items:center;gap:7px}input[type=radio],input[type=checkbox]{width:16px;height:16px;accent-color:var(--lime);padding:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid input{display:block;margin-top:7px;min-width:0;font-size:13px}.sheet form>label textarea{display:block;margin-top:7px}.sheet .button{margin-top:17px}.no-today{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--muted);margin-top:17px}.demo-notice{font-size:11px;color:var(--muted);margin-top:12px}.contact-sheet{text-align:center;background-image:radial-gradient(#d8e59222 1px,transparent 1px);background-size:20px 20px;padding-top:45px}.contact-columns{display:grid;grid-template-columns:1fr 1fr;margin:25px 0}.contact-columns>div+div{border-left:1px solid var(--line)}.contact-columns h3{color:var(--lime);font-size:14px;margin-bottom:18px}.person{margin-top:22px}.person small{display:block;color:var(--muted);font-size:12px}.person strong{font-weight:400;font-size:17px}.person-actions{display:flex;justify-content:center;gap:10px;margin-top:7px}.person-actions button{border:1px solid var(--line);background:#474a37;color:var(--lime);width:35px;height:35px;border-radius:50%;display:grid;place-items:center}.person-actions svg{width:15px;height:15px}.lightbox{background:transparent;border:0;padding:50px 0 0;max-width:95vw;width:480px;color:white;overflow:visible}.lightbox img{display:block;width:100%;max-height:77svh;object-fit:contain}.lightbox .close{top:0;right:0}.lightbox-nav{display:flex;justify-content:space-between;align-items:center;padding-top:12px}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,15px);opacity:0;z-index:9999;width:max-content;max-width:90vw;padding:12px 20px;border-radius:7px;background:var(--lime);color:var(--bg);font-size:13px;box-shadow:0 5px 25px #0003;transition:.25s;pointer-events:none}#toast.show{opacity:1;transform:translate(-50%,0)}.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}.reveal{opacity:1}.motion .reveal{opacity:0;transform:translateY(18px);transition:opacity .8s,transform .8s}.motion .reveal.visible{opacity:1;transform:none}@keyframes bounce{50%{transform:translateY(6px)}}@keyframes slideup{from{transform:translateY(70px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:1000px){.desktop-note{display:none}}@media(max-width:360px){.section{padding-left:23px;padding-right:23px}.family{font-size:14px}.family strong{font-size:16px}.gallery-section{padding-left:0;padding-right:0}.hero-top p{font-size:33px}.form-grid{grid-template-columns:1fr}.countdown{gap:8px}.note{padding:20px 12px}.note p{font-size:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion .reveal{opacity:1;transform:none}}
