:root{
  --ink:#251c19;
  --paper:#f3e7d4;
  --paper-2:#e7d3b9;
  --blue:#87aed2;
  --blue-deep:#5b86af;
  --wine:#6b2630;
  --wine-deep:#4c1820;
  --gold:#bd8f4f;
  --shadow:rgba(46,31,23,.2);
  --serif: Georgia, 'Times New Roman', serif;
  --sans: 'Trebuchet MS', Arial, Helvetica, sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--paper)}
body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);overflow-x:hidden;min-width:1180px}
a{color:inherit;text-decoration:none}
button{font:inherit}
.grain{position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.08;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E")}
.topbar{position:fixed;z-index:50;top:0;left:0;right:0;height:78px;display:grid;grid-template-columns:120px 1fr auto;align-items:center;padding:0 42px;border-bottom:1px solid rgba(37,28,25,.15);backdrop-filter:blur(12px);background:rgba(243,231,212,.82)}
.monogram{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--ink);border-radius:50%;font:700 18px var(--serif);letter-spacing:.04em}
.nav{display:flex;gap:36px;justify-content:center;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.nav a{position:relative;padding:8px 0}.nav a:after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:1px;background:var(--wine);transition:.25s}.nav a:hover:after{right:0}
.issue{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#5e5048}
.section-screen{position:relative;min-height:100vh}
.hero{padding:120px 5.5vw 70px;display:grid;grid-template-columns:1.05fr 1.1fr;grid-template-rows:1fr auto;align-items:center;overflow:hidden;background:linear-gradient(180deg,#94b9db 0%,#8cafcf 56%,#d8c7b2 100%)}
.hero-backdrop{position:absolute;inset:-10%;background:url('../assets/images/portrait-blur.jpg') center/cover no-repeat;opacity:.22;filter:saturate(.72) contrast(.9);transform:scale(1.08)}
.hero:before{content:"";position:absolute;width:52vw;height:52vw;left:48%;top:10%;border:1px solid rgba(255,255,255,.38);border-radius:50%;box-shadow:0 0 0 24px rgba(255,255,255,.06),0 0 0 92px rgba(255,255,255,.035)}
.hero-copy{position:relative;z-index:3;align-self:center;max-width:780px;padding-top:34px}
.eyebrow{margin:0 0 22px;font-size:12px;font-weight:800;letter-spacing:.19em;text-transform:uppercase}
h1,h2,h3,p{margin-top:0}
h1{margin:0;font:700 clamp(74px,6.9vw,132px)/.82 var(--serif);letter-spacing:-.065em;max-width:780px}
.ticker-line{margin:24px 0 20px;font:700 18px/1 var(--sans);letter-spacing:.22em;color:var(--wine-deep)}
.hero-note{max-width:560px;font:400 24px/1.42 var(--serif)}
.hero-actions{display:flex;gap:14px;margin-top:34px}
.button{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 22px;border:1px solid var(--ink);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;transition:transform .2s,box-shadow .2s,background .2s,color .2s}
.button:hover{transform:translateY(-3px);box-shadow:0 8px 0 rgba(37,28,25,.12)}
.button:active{transform:translateY(0);box-shadow:none}.button.primary{background:var(--wine);color:#fff6ea;border-color:var(--wine)}.button.primary:hover{background:var(--wine-deep)}.button.ghost{background:rgba(243,231,212,.44)}
.portrait-stage{position:relative;z-index:2;align-self:end;justify-self:center;width:min(690px,46vw);height:min(820px,76vh);display:grid;place-items:end center;isolation:isolate}
.hero-dog{position:relative;z-index:3;width:100%;max-height:100%;object-fit:contain;filter:drop-shadow(0 28px 28px rgba(43,35,30,.25));will-change:transform}
.oval-halo{position:absolute;z-index:1;width:72%;height:88%;left:14%;top:4%;border-radius:50%;background:linear-gradient(180deg,rgba(255,248,234,.62),rgba(107,38,48,.14));box-shadow:inset 0 0 0 1px rgba(255,255,255,.55);will-change:transform}
.caption-tag{position:absolute;z-index:5;right:-3vw;bottom:12%;background:#f7e9d3;border:1px solid var(--ink);padding:13px 16px;transform:rotate(-4deg);box-shadow:9px 9px 0 rgba(37,28,25,.1);will-change:transform}.caption-tag span,.caption-tag b{display:block}.caption-tag span{font-size:9px;letter-spacing:.16em}.caption-tag b{margin-top:5px;font:700 16px var(--serif)}
.ca-desk{position:relative;z-index:5;grid-column:1 / -1;width:min(1120px,90vw);margin:20px auto 0;background:rgba(243,231,212,.9);border:1px solid rgba(37,28,25,.28);display:grid;grid-template-columns:180px 1fr;padding:14px 16px;align-items:center;box-shadow:0 16px 50px rgba(44,39,34,.12)}
.ca-label{font-size:10px;font-weight:800;letter-spacing:.17em;text-transform:uppercase}.ca-row{display:flex;gap:14px;align-items:center}.ca-row code{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:600 14px/1.2 'Courier New',monospace}.copy-btn,.final-ca button{border:0;background:var(--ink);color:var(--paper);height:38px;padding:0 16px;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:.2s}.copy-btn:hover,.final-ca button:hover{background:var(--wine)}.copy-note{position:absolute;right:16px;bottom:-30px;font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--wine);opacity:0;transform:translateY(-4px);transition:.25s}.copy-note.show{opacity:1;transform:none}
.scroll-stamp{position:absolute;z-index:6;left:42px;bottom:32px;font-size:9px;letter-spacing:.16em;transform:rotate(-90deg);transform-origin:left bottom}
.marquee{overflow:hidden;background:var(--wine);color:#f9ead6;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}.marquee-track{display:flex;gap:28px;width:max-content;padding:14px 0;animation:marquee 24s linear infinite;font:700 14px var(--serif);letter-spacing:.08em}.marquee-track span,.marquee-track i{white-space:nowrap}.marquee-track i{opacity:.55}
@keyframes marquee{to{transform:translateX(-50%)}}
.section-number{position:absolute;top:110px;left:4vw;font:700 90px/.8 var(--serif);opacity:.08}
.etiquette{display:grid;grid-template-columns:1.25fr .75fr;gap:8vw;align-items:center;padding:140px 10vw 110px;background:linear-gradient(110deg,#efe2d0,#dbc7ac)}
.rulebook{max-width:850px}.rulebook h2,.portrait-copy h2,.interlude-card h2,.guestbook h2,.finale h2{font:700 clamp(58px,5vw,96px)/.92 var(--serif);letter-spacing:-.045em;margin:0 0 28px}.lede{font:400 22px/1.55 var(--serif);max-width:760px}.rules{margin-top:45px;border-top:1px solid rgba(37,28,25,.3)}.rules>div{display:grid;grid-template-columns:70px 1fr;gap:10px;padding:18px 0;border-bottom:1px solid rgba(37,28,25,.23)}.rules span{font-size:10px;font-weight:800;letter-spacing:.16em}.rules p{margin:0;font:700 20px var(--serif)}
.desk-card{position:relative;max-width:420px;padding:46px 42px 50px;background:#f8ecd9;border:1px solid #b69a77;box-shadow:22px 28px 0 rgba(79,55,40,.08);transform:rotate(2.8deg)}.paperclip{position:absolute;width:18px;height:54px;border:3px solid #8a8175;border-radius:14px;top:-14px;left:42px;transform:rotate(16deg)}.tiny-label{font-size:9px;letter-spacing:.18em}.desk-card h3{font:700 42px/1.03 var(--serif);margin:26px 0 18px}.desk-card>p:not(.tiny-label){font:18px/1.5 var(--serif)}.signature{margin-top:40px;font:italic 28px var(--serif);color:var(--wine)}
.portrait-room{padding:120px 8vw;background:#7499bc;overflow:hidden}.portrait-room:before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:44px 44px;opacity:.5}.portrait-grid{position:relative;z-index:2;min-height:760px;display:grid;grid-template-columns:.82fr 1.18fr;grid-template-rows:1fr auto;gap:26px 6vw;align-items:center}.portrait-copy{align-self:start;padding-top:70px}.portrait-copy p:last-child{font:20px/1.5 var(--serif);max-width:460px}.frame{position:relative;background:#c6a577;padding:26px;box-shadow:0 30px 70px rgba(30,42,53,.28);border:10px ridge #9b774b;transform:rotate(-1.3deg)}.frame img{display:block;width:100%;max-height:660px;object-fit:cover;object-position:center 8%;border:1px solid #5a4937}.frame-plaque{position:absolute;left:50%;bottom:-32px;transform:translateX(-50%);background:#dec9a5;border:1px solid #5a4937;padding:9px 14px;font-size:9px;font-weight:800;letter-spacing:.14em;white-space:nowrap}.glint{position:absolute;inset:30px;background:linear-gradient(120deg,transparent 35%,rgba(255,255,255,.22) 49%,transparent 63%);transform:translateX(-120%);transition:transform .7s}.interactive-frame:hover .glint{transform:translateX(120%)}
.memo{grid-column:1 / 2;align-self:end;max-width:430px;background:var(--wine);color:#f8ead7;padding:26px 28px;transform:rotate(1deg);box-shadow:12px 14px 0 rgba(37,28,25,.16)}.memo span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.18em;opacity:.75}.memo strong{display:block;margin-top:10px;font:700 24px/1.25 var(--serif)}
.interlude{display:grid;place-items:center;padding:120px;overflow:hidden}.interlude-bg{position:absolute;inset:0;background:url('../assets/images/jean-philinu.png') center 28%/cover no-repeat;filter:blur(18px) saturate(.62) brightness(.8);transform:scale(1.08)}.interlude:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(41,28,25,.62),rgba(43,54,63,.15),rgba(37,25,24,.58))}.interlude-card{position:relative;z-index:2;width:min(790px,70vw);padding:70px 80px;background:rgba(245,232,211,.9);border:1px solid rgba(255,255,255,.7);box-shadow:0 30px 120px rgba(20,16,14,.35);text-align:center}.interlude-card h2{font-size:72px}.interlude-card p:last-child{font:20px/1.55 var(--serif);max-width:570px;margin:0 auto}.bell{position:absolute;z-index:4;right:7vw;bottom:11vh;width:100px;height:64px;border:0;border-bottom:8px solid #6f552f;border-radius:48px 48px 16px 16px;background:linear-gradient(#e8c06c,#ac7d34);box-shadow:0 16px 30px rgba(0,0,0,.25);cursor:pointer;transition:transform .13s}.bell:active{transform:translateY(6px)}.bell span{position:absolute;left:42px;top:-18px;width:16px;height:18px;border-radius:50%;background:#d9ad58}.bell-message{position:absolute;z-index:4;right:8.2vw;bottom:20vh;color:#fff6e7;font:italic 22px var(--serif);opacity:0;transform:translateY(6px);transition:.25s}.bell-message.show{opacity:1;transform:none}
.guestbook{display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:center;padding:130px 9vw;background:#eee1cf}.guestbook-title{max-width:750px}.guestbook-title>p:last-child{font:22px/1.5 var(--serif);max-width:540px}.community-buttons{display:grid;gap:18px}.community-card{position:relative;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:8px;padding:28px 30px;border:1px solid var(--ink);background:rgba(255,255,255,.23);transition:transform .25s,background .25s,box-shadow .25s}.community-card:hover{transform:translate(-6px,-6px);background:#f7ecdc;box-shadow:12px 12px 0 var(--wine)}.community-kicker{grid-column:1/-1;font-size:9px;letter-spacing:.17em;text-transform:uppercase}.community-card strong{font:700 34px var(--serif)}.community-card em{font-size:28px;font-style:normal}.community-card:nth-child(2){margin-left:60px}
.finale{display:grid;place-items:center;text-align:center;padding:130px 7vw;background:linear-gradient(180deg,#6c8faf 0%,#89accb 48%,#d6c4ad 100%);overflow:hidden}.finale:before{content:"JP";position:absolute;font:700 52vw/.8 var(--serif);color:rgba(255,255,255,.08);letter-spacing:-.12em;transform:translateY(6vh)}.finale-inner{position:relative;z-index:2;width:min(1100px,90vw)}.finale h2{font-size:clamp(84px,7.8vw,148px)}.final-ca{margin:36px auto 28px;display:grid;grid-template-columns:54px 1fr auto;align-items:center;width:min(900px,85vw);background:#f5e9d7;border:1px solid var(--ink);text-align:left}.final-ca>span{display:grid;place-items:center;height:56px;background:var(--wine);color:#fff5e8;font-size:10px;font-weight:800;letter-spacing:.14em}.final-ca code{padding:0 18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:600 13px 'Courier New',monospace}.final-ca button{height:56px}.button.large{min-width:230px;min-height:58px}.footer-line{margin-top:42px;font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .8s cubic-bezier(.22,1,.36,1)}.reveal.in{opacity:1;transform:none}.tilt-card{transition:transform .25s ease}.tilt-card:hover{transform:rotate(0deg) translateY(-5px)}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
