
:root{--bg:#f8f3f4;--paper:#fffaf9;--ink:#28151e;--muted:#7f6570;--wine:#6f2843;--deep:#2f1723;--rose:#c47d94;--line:rgba(47,23,35,.12)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:"DM Sans",sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}
.lock-screen{min-height:100svh;display:grid;place-items:center;padding:24px;overflow:hidden;position:relative;background:radial-gradient(circle at 50% 15%,#6d354b 0,#3b1d2b 38%,#211119 100%)}
.glow{position:absolute;border-radius:50%;filter:blur(12px);opacity:.35}.glow-a{width:420px;height:420px;background:#bb7890;top:-190px;right:-130px}.glow-b{width:320px;height:320px;background:#8a425e;bottom:-160px;left:-100px}
.lock-card{position:relative;width:min(100%,440px);padding:46px 34px 34px;border:1px solid rgba(255,255,255,.16);border-radius:28px;background:rgba(255,255,255,.08);backdrop-filter:blur(20px);box-shadow:0 28px 90px rgba(0,0,0,.28);color:#fff;text-align:center}
.tiny-heart{font-size:29px;color:#e7a8ba;margin-bottom:18px}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:700}.lock-card .eyebrow{color:#deb3c1}
.lock-card h1,.hero h1,.intro h2,.reasons-heading h2,.finale h2,.quote-band p{font-family:"Playfair Display",serif;font-weight:600}.lock-card h1{font-size:44px;margin:8px 0 12px}
.lock-copy{color:#eadde2;line-height:1.65;margin:0 auto 28px;max-width:330px}.lock-form{text-align:left}.lock-form label{display:block;font-size:12px;font-weight:700;margin:0 0 8px;color:#f5e8ed}
.password-row{display:flex;background:#fff;border-radius:14px;overflow:hidden}.password-row input{min-width:0;flex:1;border:0;outline:0;padding:15px 16px;color:var(--ink)}.show-pass{border:0;background:#fff;padding:0 15px;cursor:pointer}
.error{color:#ffd5df;font-size:13px;margin:10px 2px 0}.primary-btn{width:100%;margin-top:14px;border:0;border-radius:14px;background:#f4dfe6;color:#4b2131;padding:15px 18px;font-weight:800;display:flex;justify-content:center;gap:10px;cursor:pointer;transition:.2s transform,.2s background}.primary-btn:hover{transform:translateY(-2px);background:#fff}.lock-note{font-size:11px;color:#c9acb6;margin:22px 0 0}
.topbar{height:76px;display:flex;align-items:center;gap:28px;padding:0 clamp(22px,5vw,76px);position:absolute;z-index:20;top:0;width:100%;color:#fff}.brand{font-family:"Playfair Display";font-size:27px;font-weight:700;margin-right:auto}.brand span{color:#e6a4b8}.topbar nav{display:flex;gap:28px;font-size:13px}.topbar nav a{opacity:.82}.logout{font-size:12px;border:1px solid rgba(255,255,255,.3);padding:8px 12px;border-radius:99px}
.hero{min-height:100svh;position:relative;display:grid;grid-template-columns:1.1fr .8fr;gap:7vw;align-items:center;padding:120px clamp(24px,8vw,120px) 70px;overflow:hidden;background:linear-gradient(135deg,#27131d 0%,#4a2333 54%,#71344b 100%);color:#fff}
.hero:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,black,transparent)}
.hero-light{position:absolute;width:700px;height:700px;border-radius:50%;background:#a85a74;filter:blur(110px);opacity:.22;right:-250px;top:-160px}.hero-content,.hero-card,.scroll-hint{position:relative;z-index:2}.hero .eyebrow{color:#dfb5c2}
.hero h1{font-size:clamp(55px,7vw,105px);line-height:.93;letter-spacing:-.045em;margin:18px 0 26px}.hero h1 em,.intro h2 em,.reasons-heading em,.finale h2 em,.quote-band em{color:#daa0b3;font-weight:600}.lead{max-width:580px;color:#eadce1;font-size:clamp(17px,1.5vw,21px);line-height:1.7}
.primary-btn.inline{display:inline-flex;width:auto;background:#f5e7eb;margin-top:18px;padding:14px 20px}.hero-card{justify-self:end;width:min(100%,410px);transform:rotate(2.5deg)}.photo-frame{aspect-ratio:4/5;background:#ead4dc;border:8px solid #fff;border-bottom-width:48px;box-shadow:0 30px 70px rgba(0,0,0,.28);overflow:hidden;position:relative}.photo-frame img{width:100%;height:100%;object-fit:cover}.photo-placeholder{position:absolute;inset:0;display:none;place-items:center;text-align:center;color:#764057;background:linear-gradient(145deg,#efdce3,#d8abbc)}.photo-missing .photo-placeholder{display:grid}.photo-placeholder span{font-size:54px}.photo-placeholder small{position:absolute;bottom:26px;font-weight:700}.hero-card>p{font-family:"Playfair Display";font-style:italic;text-align:center;color:#dfc7cf;margin:20px 0 0}.scroll-hint{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#d9bdc6}
.section{padding:110px clamp(24px,8vw,120px)}.section-kicker{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--wine);font-weight:800;margin-bottom:28px}.intro{background:#fbf7f5}.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:10vw}.intro h2,.reasons-heading h2,.finale h2{font-size:clamp(42px,5vw,76px);line-height:1.02;letter-spacing:-.04em;margin:0}.intro h2 em{color:var(--wine)}.prose{padding-top:8px;color:#66515a;font-size:18px;line-height:1.8}.prose p{margin:0 0 22px}
.quote-band{padding:100px 24px;background:#6f2843;color:#fff;text-align:center}.quote-band p{font-size:clamp(36px,5vw,70px);line-height:1.07;margin:0}.quote-band em{color:#f0bfd0}
.reasons-section{background:#f3ebed}.reasons-heading{display:flex;justify-content:space-between;align-items:end;gap:60px;margin-bottom:70px}.reasons-heading>p{max-width:340px;color:var(--muted);line-height:1.7}.reasons-heading h2 em{color:var(--wine)}
.deck-wrap{display:grid;grid-template-columns:64px minmax(0,760px) 64px;justify-content:center;align-items:center;gap:24px}.reason-card{min-height:430px;padding:30px 38px 34px;background:var(--paper);border:1px solid rgba(111,40,67,.14);border-radius:28px;box-shadow:0 24px 70px rgba(65,28,42,.10);display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;touch-action:pan-y;transition:transform .25s,opacity .25s}.reason-card:before{content:"";position:absolute;width:230px;height:230px;border-radius:50%;background:#efdbe2;right:-120px;top:-120px}.card-top{position:absolute;top:26px;left:30px;right:30px;display:flex;justify-content:space-between;color:#a2808d;font-size:11px;text-transform:uppercase;letter-spacing:.15em;font-weight:800}.card-top strong{font-size:13px;color:var(--wine)}.card-heart{font-size:27px;color:#bc7890;margin-bottom:26px}.reason-card>p{font-family:"Playfair Display";font-size:clamp(28px,3.2vw,47px);line-height:1.2;letter-spacing:-.025em;margin:0;max-width:640px}.card-counter{position:absolute;bottom:28px;right:32px;color:#a2808d;font-size:12px}.deck-arrow{width:56px;height:56px;border-radius:50%;border:1px solid #cbb6bd;background:transparent;color:var(--wine);font-size:22px;cursor:pointer}.deck-mobile-actions{display:none}.progress{height:3px;background:#d8c7cd;max-width:760px;margin:30px auto 0;overflow:hidden;border-radius:99px}.progress span{display:block;height:100%;width:1%;background:var(--wine);transition:width .3s}
.finale{background:#24121b;color:#fff;text-align:center}.finale-card{max-width:900px;margin:auto}.big-heart{display:block;color:#d28da5;font-size:42px;margin-bottom:22px}.finale .eyebrow{color:#cea8b4}.finale h2 em{color:#e0a6b9}.finale>div>p:not(.eyebrow){max-width:650px;margin:30px auto;color:#dccbd1;line-height:1.8;font-size:18px}.signature{font-family:"Playfair Display";font-style:italic;font-size:24px;color:#e8b5c4;margin-top:42px}footer{display:flex;justify-content:space-between;align-items:center;padding:28px clamp(24px,8vw,120px);background:#1b0d13;color:#a88793;font-size:12px}
.reveal{animation:rise .8s ease both}.delay{animation-delay:.12s}@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.slide-out-left{transform:translateX(-45px) rotate(-1deg);opacity:0}.slide-out-right{transform:translateX(45px) rotate(1deg);opacity:0}
@media(max-width:800px){.topbar{height:64px;padding:0 18px}.topbar nav{display:none}.logout{font-size:11px}.hero{grid-template-columns:1fr;align-content:center;gap:42px;padding:105px 22px 70px;min-height:auto}.hero h1{font-size:56px}.lead{font-size:17px}.hero-card{justify-self:center;width:min(82vw,330px);margin:10px 0 20px}.scroll-hint{display:none}.section{padding:78px 22px}.intro-grid{grid-template-columns:1fr;gap:36px}.intro h2,.reasons-heading h2,.finale h2{font-size:46px}.prose{font-size:16px}.quote-band{padding:70px 22px}.quote-band p{font-size:40px}.reasons-heading{display:block;margin-bottom:42px}.reasons-heading>p{margin-top:20px}.deck-wrap{grid-template-columns:1fr}.deck-arrow{display:none}.reason-card{min-height:410px;padding:28px 26px 56px;border-radius:23px}.reason-card>p{font-size:32px}.card-top{left:24px;right:24px}.deck-mobile-actions{display:flex;gap:10px;margin-top:16px}.deck-mobile-actions button{flex:1;border:1px solid #cbb6bd;background:#fff;border-radius:13px;padding:13px;color:var(--wine);font-weight:700}footer{padding:24px 20px}.lock-card{padding:38px 22px 28px;border-radius:24px}}
@media(max-width:380px){.hero h1{font-size:48px}.intro h2,.reasons-heading h2,.finale h2{font-size:39px}.reason-card>p{font-size:28px}}

/* Persónulegar minningar og gagnvirk bréf */
.memories-heading h2,.open-heading h2,.letter-paper h3{font-family:"Playfair Display",serif}.memories-heading h2,.open-heading h2{font-size:clamp(42px,5vw,76px);line-height:1.02;letter-spacing:-.04em;margin:0}.memories-heading h2 em{color:var(--wine)}
.memories{background:#fffaf8}.memories-heading{display:flex;justify-content:space-between;align-items:end;gap:60px;margin-bottom:54px}.memories-heading>p{max-width:350px;color:var(--muted);line-height:1.75;margin:0}.memory-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:255px;gap:14px}.memory-photo{position:relative;border:0;padding:0;border-radius:20px;overflow:hidden;background:#e9d9de;cursor:zoom-in;color:#fff;box-shadow:0 12px 30px rgba(65,28,42,.08)}.memory-photo.tall{grid-row:span 2}.memory-photo.wide{grid-column:span 2}.memory-photo img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .55s ease,filter .55s ease}.memory-photo:nth-child(1) img{object-position:50% 48%}.memory-photo:nth-child(2) img{object-position:50% 42%}.memory-photo:nth-child(3) img{object-position:50% 42%}.memory-photo:nth-child(7) img{object-position:50% 34%}.memory-photo:after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(transparent,rgba(30,12,20,.76));pointer-events:none}.memory-photo span{position:absolute;z-index:2;left:18px;right:18px;bottom:17px;text-align:left;font-family:"Playfair Display",serif;font-size:18px;font-style:italic;text-shadow:0 2px 14px rgba(0,0,0,.5)}.memory-photo:hover img{transform:scale(1.045);filter:saturate(1.08)}.tap-note{text-align:center;color:#9b7d88;font-size:12px;margin:22px 0 0}
.deck-tools{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:25px}.deck-tools button{border:1px solid #cbb6bd;border-radius:999px;padding:11px 17px;background:transparent;color:var(--wine);font-size:12px;font-weight:700;cursor:pointer;transition:.2s}.deck-tools button:hover{background:#fff;transform:translateY(-1px)}.deck-tools .final-letter-btn{background:var(--wine);color:#fff;border-color:var(--wine)}.deck-tools .final-letter-btn:disabled{opacity:.35;cursor:not-allowed;transform:none}
.open-when{background:#fbf7f5}.open-heading{text-align:center;max-width:720px;margin:0 auto 52px}.open-heading p{color:var(--muted);margin:20px 0 0}.letter-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:1120px;margin:auto}.letter{min-height:235px;border:1px solid rgba(111,40,67,.14);border-radius:22px;padding:26px 20px;background:#fff;box-shadow:0 14px 42px rgba(65,28,42,.07);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:.25s transform,.25s box-shadow,.25s background}.letter:hover{transform:translateY(-7px) rotate(-.5deg);box-shadow:0 24px 55px rgba(65,28,42,.13);background:#fffdfc}.letter span{font-size:36px;margin-bottom:22px}.letter strong{font-family:"Playfair Display",serif;font-size:22px}.letter small{color:#a1838e;margin-top:12px}
.modal{position:fixed;z-index:100;inset:0;padding:24px;background:rgba(25,10,16,.88);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:.25s}.modal.open{opacity:1;visibility:visible}.modal-close{position:absolute;z-index:3;right:24px;top:20px;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.1);color:#fff;font-size:29px;cursor:pointer}.photo-modal-card{max-width:min(100%,1000px);max-height:88vh;text-align:center}.photo-modal-card img{display:block;max-width:100%;max-height:76vh;margin:auto;border-radius:16px;box-shadow:0 26px 80px rgba(0,0,0,.45)}.photo-modal-card p{color:#f6e8ed;font-family:"Playfair Display",serif;font-size:20px;font-style:italic;margin:18px 0 0}.letter-paper{position:relative;width:min(100%,650px);padding:62px 58px 52px;border-radius:4px;background:#fffaf3;color:var(--ink);box-shadow:0 28px 100px rgba(0,0,0,.4);text-align:center;transform:translateY(18px) rotate(-.5deg);transition:.28s transform}.modal.open .letter-paper{transform:translateY(0) rotate(-.5deg)}.letter-paper:after{content:"";position:absolute;inset:12px;border:1px solid rgba(111,40,67,.16);pointer-events:none}.letter-seal{position:relative;z-index:1;display:grid;place-items:center;width:58px;height:58px;margin:-91px auto 30px;border-radius:50%;background:var(--wine);color:#fff;border:5px solid #ead3da;font-family:"Playfair Display",serif;font-size:20px}.letter-paper .eyebrow{color:var(--wine)}.letter-paper h3{font-size:42px;margin:12px 0 20px}.letter-paper>p:not(.eyebrow){color:#66515a;line-height:1.85;font-size:17px;margin:0}.letter-paper .signature{color:var(--wine)}.final-paper{background:#fff7f7}.heart-pop{position:fixed;z-index:120;left:50%;top:50%;color:#e2a0b5;font-size:22px;pointer-events:none;animation:heartFly 1.5s ease-out forwards}@keyframes heartFly{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}
@media(max-width:800px){.memories-heading h2,.open-heading h2{font-size:46px}.memories-heading{display:block;margin-bottom:34px}.memories-heading>p{margin-top:20px}.memory-grid{grid-template-columns:1fr 1fr;grid-auto-rows:220px;gap:10px}.memory-photo.wide{grid-column:span 2}.memory-photo.tall{grid-row:span 2}.memory-photo span{font-size:15px;left:12px;right:12px;bottom:12px}.letter-grid{grid-template-columns:1fr 1fr;gap:10px}.letter{min-height:180px;padding:20px 12px}.letter span{font-size:30px;margin-bottom:14px}.letter strong{font-size:18px}.letter-paper{padding:52px 27px 38px}.letter-paper h3{font-size:34px}.letter-paper>p:not(.eyebrow){font-size:15px}.modal{padding:17px}.modal-close{right:14px;top:14px}}
@media(max-width:380px){.memories-heading h2,.open-heading h2{font-size:39px}.memory-grid{grid-auto-rows:190px}.letter-grid{grid-template-columns:1fr}}

/* Trúlofunardagurinn */
.engagement{position:relative;overflow:hidden;text-align:center;background:linear-gradient(145deg,#2a141e,#55263a 58%,#71344b);color:#fff}.engagement-glow{position:absolute;width:620px;height:620px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;background:#a95a74;filter:blur(110px);opacity:.22}.engagement>*:not(.engagement-glow){position:relative;z-index:1}.engagement .eyebrow{color:#e2b7c5;margin:0 0 18px}.engagement h2{font-family:"Playfair Display",serif;font-size:clamp(48px,7vw,94px);line-height:1;margin:0;letter-spacing:-.045em}.engagement-lead{font-family:"Playfair Display",serif;font-size:clamp(22px,2.4vw,34px);font-style:italic;color:#ead1da;margin:22px 0 42px}.rings{height:72px;display:flex;justify-content:center;align-items:center;margin-bottom:25px}.rings span{display:block;width:51px;height:51px;border:4px solid #e8c28b;border-radius:50%;box-shadow:0 0 0 1px rgba(255,255,255,.16),inset 0 0 10px rgba(255,255,255,.15)}.rings span+span{margin-left:-15px}.since-card{width:min(100%,590px);margin:0 auto;padding:28px 32px;border:1px solid rgba(255,255,255,.18);border-radius:24px;background:rgba(255,255,255,.08);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;gap:24px;text-align:left}.since-card strong{font-family:"Playfair Display",serif;font-size:58px;line-height:1;color:#f4d6df}.since-card span{max-width:280px;color:#eadde2;line-height:1.55}.engagement-note{font-size:14px;color:#dcbfca;margin:28px 0 0}.engagement-note:before,.engagement-note:after{content:"♥";font-size:9px;color:#d79aaf;margin:0 10px}
@media(max-width:800px){.engagement{padding-left:18px;padding-right:18px}.rings{height:60px}.rings span{width:43px;height:43px}.engagement h2{font-size:50px}.engagement-lead{font-size:23px;margin-bottom:32px}.since-card{padding:24px 20px;gap:15px;border-radius:20px}.since-card strong{font-size:48px}.since-card span{font-size:14px}.engagement-note{line-height:1.6}}

/* Uppáhaldsástæður */
.card-actions{display:flex;align-items:center;gap:12px}.card-actions strong{min-width:24px;text-align:right}.favorite-reason{width:34px;height:34px;border:1px solid #dcc8cf;border-radius:50%;background:rgba(255,255,255,.7);color:#a56a7e;font-size:20px;line-height:1;cursor:pointer;transition:.2s;display:grid;place-items:center}.favorite-reason:hover{transform:scale(1.08);background:#fff}.favorite-reason.active{color:var(--wine);background:#f5e3e9;border-color:#d9aabb}.favorites-paper{max-height:min(84vh,760px);display:flex;flex-direction:column}.favorites-paper h3{font-size:34px;margin-bottom:24px}.favorites-list{overflow:auto;text-align:left;padding:2px 5px 2px 0}.favorites-list button{width:100%;display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:start;border:0;border-bottom:1px solid rgba(111,40,67,.12);padding:15px 8px;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.favorites-list button:hover{background:rgba(111,40,67,.05)}.favorites-list button span{font-size:11px;letter-spacing:.12em;color:var(--wine);padding-top:4px}.favorites-list button p{font-family:"Playfair Display",serif;font-size:18px;line-height:1.45;margin:0}.favorites-empty{text-align:center;color:var(--muted);line-height:1.7;padding:20px 10px}

/* Skafmiði */
.surprise{background:#efe3e7;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,560px);gap:8vw;align-items:center}.surprise-copy h2{font-family:"Playfair Display",serif;font-size:clamp(42px,5vw,74px);line-height:1.03;letter-spacing:-.04em;margin:0}.surprise-copy h2 em{color:var(--wine)}.surprise-copy>p{color:var(--muted);font-size:17px;line-height:1.7;margin:24px 0 0}.scratch-card{position:relative;width:100%;aspect-ratio:1.72;border-radius:26px;overflow:hidden;background:linear-gradient(145deg,#fffaf8,#f5e5e9);box-shadow:0 24px 70px rgba(65,28,42,.16);border:1px solid rgba(111,40,67,.12)}.scratch-reveal{position:absolute;inset:0;padding:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--ink)}.scratch-heart{font-size:29px;color:var(--wine);margin-bottom:14px}.scratch-reveal p{font-family:"Playfair Display",serif;font-size:clamp(25px,3vw,38px);line-height:1.1;margin:0 0 14px}.scratch-reveal strong{font-size:14px;line-height:1.6;color:#775763}.scratch-card canvas{position:absolute;z-index:2;inset:0;width:100%;height:100%;touch-action:none;cursor:grab;transition:opacity .65s ease}.scratch-card canvas:active{cursor:grabbing}.scratch-card canvas.gone{opacity:0;pointer-events:none}.scratch-card.revealed{animation:scratchPulse .55s ease}.scratch-reset{grid-column:2;justify-self:center;margin-top:-5vw;border:0;background:transparent;color:#896a76;font-size:12px;text-decoration:underline;text-underline-offset:4px;cursor:pointer}@keyframes scratchPulse{50%{transform:scale(1.015)}}
@media(max-width:800px){.card-actions{gap:8px}.favorite-reason{width:32px;height:32px}.favorites-paper h3{font-size:28px}.favorites-list button{grid-template-columns:34px 1fr}.favorites-list button p{font-size:16px}.surprise{grid-template-columns:1fr;gap:38px}.surprise-copy h2{font-size:46px}.scratch-card{max-width:560px;margin:auto;border-radius:21px}.scratch-reset{grid-column:1;margin-top:-25px}.scratch-reveal{padding:20px}.scratch-reveal p{font-size:27px}}
