:root{--milk:#f8f6f1;--paper:#fffdf8;--graphite:#373532;--muted:#77716a;--olive:#748365;--olive-dark:#556246;--wood:#b99a78;--line:rgba(55,53,50,.14);--shadow:0 24px 70px rgba(38,34,28,.12)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--milk);color:var(--graphite);font-family:Inter,Manrope,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.serif{font-family:Georgia,Times New Roman,serif;font-weight:400}.wrap{width:min(1120px,calc(100% - 32px));margin:0 auto}.hero{min-height:100svh;position:relative;display:grid;place-items:center;overflow:hidden;color:#fff;text-align:center}.hero:before{content:"";position:absolute;inset:0;background-image:linear-gradient(180deg,rgba(19,22,17,.12),rgba(19,22,17,.72)),url(/images/cover.jpg);background-size:cover;background-position:50%;transform:scale(1.02)}.hero-content{position:relative;padding:72px 22px 46px;width:min(760px,100%);animation:fadeUp .9s ease both}.names{font-size:clamp(54px,12vw,116px);line-height:.86;letter-spacing:.02em;margin:0;text-shadow:0 10px 36px rgba(0,0,0,.32)}.heart{display:block;font-size:clamp(28px,6vw,46px);line-height:1.25;opacity:.94}.hero-date{margin:28px 0 0;font-size:clamp(18px,4vw,28px);letter-spacing:.08em;text-transform:uppercase}.hero-city{margin:8px 0 34px;font-size:clamp(16px,3vw,22px);opacity:.94}.hero-phrase{font-size:clamp(19px,4.4vw,34px);line-height:1.23;max-width:760px;margin:0 auto 32px}.btn{border:0;border-radius:999px;padding:15px 28px;background:var(--olive);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;transition:transform .2s ease,background .2s ease,box-shadow .2s ease;box-shadow:0 12px 34px rgba(63,74,52,.26)}.btn:hover{background:var(--olive-dark);transform:translateY(-1px)}.btn.secondary{background:transparent;color:var(--graphite);border:1px solid var(--line);box-shadow:none}.btn.secondary:hover{background:rgba(116,131,101,.08)}.section{padding:86px 0}.section.compact{padding:58px 0}.title{font-size:clamp(42px,8vw,82px);line-height:.96;margin:0 0 26px;letter-spacing:-.03em}.lead{font-size:clamp(19px,2.5vw,26px);line-height:1.55;max-width:820px;margin:0 auto;color:var(--graphite)}.center{text-align:center}.card{background:rgba(255,253,248,.78);border:1px solid var(--line);border-radius:34px;padding:clamp(24px,5vw,52px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.timer{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;max-width:760px;margin:38px auto 0}.timer-box{background:var(--paper);border:1px solid var(--line);border-radius:28px;padding:22px 10px}.timer-num{display:block;font-size:clamp(30px,7vw,64px);line-height:1}.timer-label{color:var(--muted);font-size:14px;margin-top:8px}.schedule{display:grid;grid-gap:16px;gap:16px;max-width:820px;margin:34px auto 0}.schedule-item{display:grid;grid-template-columns:84px 1fr;grid-gap:20px;gap:20px;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:30px;padding:22px}.time{font-size:28px;color:var(--olive-dark);text-align:center}.event-title{font-size:24px;margin:0 0 6px}.event-text{color:var(--muted);margin:0;line-height:1.5}.locations{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:18px;gap:18px;margin-top:32px}.location-card{background:var(--paper);border:1px solid var(--line);border-radius:32px;padding:30px;min-height:240px;display:flex;flex-direction:column;justify-content:space-between}.location-card h3{font-size:28px;margin:0 0 12px}.location-card p{color:var(--muted);line-height:1.55;margin:0 0 20px}.gallery{columns:260px 3;column-gap:18px;margin-top:34px}.gallery img{width:100%;page-break-inside:avoid;break-inside:avoid;border-radius:28px;margin:0 0 18px;box-shadow:0 18px 46px rgba(30,26,20,.13)}.rsvp-panel{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;align-items:stretch;margin-top:32px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:32px;padding:30px}.panel h3{font-size:30px;margin:0 0 12px}.panel p{line-height:1.55}.footer,.panel p{color:var(--muted)}.footer{padding:42px 0 60px;text-align:center}.form{display:grid;grid-gap:16px;gap:16px}.field{display:grid;grid-gap:8px;gap:8px}.field label{color:var(--muted);font-size:14px}.input,.select,.textarea{width:100%;border:1px solid var(--line);background:rgba(255,255,255,.75);border-radius:18px;padding:14px 16px;color:var(--graphite);outline:none}.textarea{min-height:110px;resize:vertical}.radio-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.radio-card{border:1px solid var(--line);border-radius:20px;padding:14px;cursor:pointer;background:rgba(255,255,255,.55)}.radio-card input{margin-right:8px}.alert{padding:14px 16px;border-radius:18px;background:rgba(116,131,101,.1);color:var(--olive-dark)}.error{background:rgba(168,82,73,.1);color:#8a382f}.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px;margin:28px 0}.stat{background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:18px}.stat b{display:block;font-size:34px;margin-bottom:4px}.table-wrap{overflow:auto;background:var(--paper);border:1px solid var(--line);border-radius:24px}table{border-collapse:collapse;min-width:900px;width:100%}td,th{padding:14px 16px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:13px;font-weight:600}.small,th{color:var(--muted)}.small{font-size:14px}.topbar{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:10;display:flex;gap:8px;padding:8px;background:rgba(248,246,241,.72);border:1px solid rgba(255,255,255,.32);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbar,.topbar a{border-radius:999px}.topbar a{padding:9px 14px;color:var(--graphite);font-size:14px}.topbar a:hover{background:rgba(116,131,101,.12)}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (max-width:760px){.section{padding:66px 0}.timer{grid-template-columns:repeat(2,1fr)}.schedule-item{text-align:center}.admin-grid,.locations,.rsvp-panel,.schedule-item{grid-template-columns:1fr}.topbar{display:none}.radio-row{grid-template-columns:1fr}.hero:before{background-position:50%}}