:root{--ink:#1F3A6B;--bg:#EFE9DD;--ink:#2B2A26;--accent:#2E4636;--red:#AC281F}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Libre Caslon Text',Georgia,serif;overflow-x:hidden}
a{color:var(--accent)}a:hover{color:#1C2D22}
img{max-width:100%}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{max-width:1280px;margin:0 auto;padding:0 clamp(16px,4vw,48px) 80px}
.mono{font-family:'Special Elite',ui-monospace,monospace}

/* nav + masthead */
.nav{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 0;border-bottom:1px solid rgba(43,42,38,.2);font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.btn{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;background:var(--accent);color:#F6F1E6;text-decoration:none;border-radius:2px;font-family:'Special Elite',monospace;font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.btn:hover{color:#fff;background:#24382B}
.masthead{text-align:center;padding:56px 0 40px}
.kicker{font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:#C25A3C}
.title{margin:4px 0 -6px;font-family:'Anton','Oswald',Impact,sans-serif;font-size:clamp(56px,10vw,128px);font-weight:400;line-height:.95;letter-spacing:.02em;text-transform:uppercase;color:var(--red);transform:scaleY(.78);filter:url(#worn)}
.signoff{margin-top:14px;font-family:'La Belle Aurore','Bradley Hand',cursive;font-size:22px;color:var(--ink)}

/* intro + write back */
.intro{display:flex;flex-wrap:wrap;gap:32px 64px;align-items:flex-start;padding-bottom:40px}
.intro>*{flex:1 1 340px;min-width:0}
.intro h2{margin:0;font-size:26px;font-weight:400}
.intro label{display:block;margin-top:8px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}
.wb-row{display:flex;gap:12px;align-items:flex-end;margin-top:4px}
.under{border:0;border-bottom:1px solid var(--ink);background:transparent;font-family:'Libre Caslon Text',Georgia,serif;font-size:16px;padding:10px 0;color:var(--ink);width:100%;border-radius:0}
.under:focus{outline:none;border-bottom:2px solid var(--accent)}
.post-it{flex:none;min-height:44px;padding:0 4px;border:0;background:transparent;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);cursor:pointer}
.post-it[disabled]{opacity:.5;cursor:default}
.wb-status{min-height:22px;margin-top:10px;font-size:15px}
.wb-status.ok{font-family:'La Belle Aurore','Bradley Hand',cursive;color:var(--ink);font-size:18px}
.wb-status.err{color:#8B2A1E}
.desc{margin:0;font-size:17px;line-height:1.65}

/* controls */
.controls{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;padding:18px 0 22px;border-top:1px solid rgba(43,42,38,.2)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-family:'Special Elite',ui-monospace,monospace;font-size:13px;letter-spacing:.06em;text-transform:uppercase;min-height:44px;padding:0 16px;border:1px solid var(--ink);background:transparent;color:var(--ink);border-radius:999px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.sort{display:flex;align-items:center;gap:10px;font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.sort select{min-height:44px;padding:0 10px;background:transparent;border:1px solid var(--ink);border-radius:2px;font-family:'Special Elite',monospace;font-size:13px;color:var(--ink)}

/* frame + cork */
.frame{--fw:22px;position:relative;margin-top:12px;padding:var(--fw);border-radius:2px;box-shadow:0 1px 2px rgba(40,25,10,.35),0 14px 24px -10px rgba(40,25,10,.45),0 40px 70px -30px rgba(40,25,10,.55)}
.rail{position:absolute;z-index:5;pointer-events:none}
.rail-t,.rail-b{left:0;right:0;height:var(--fw);background-image:url(assets/pine-horizontal.jpg);background-size:auto 100%}
.rail-l,.rail-r{top:0;bottom:0;width:var(--fw);background-image:url(assets/pine-vertical.jpg);background-size:100% auto}
.rail-t{top:0;clip-path:polygon(0 0,100% 0,calc(100% - var(--fw)) 100%,var(--fw) 100%)}
.rail-b{bottom:0;background-position:300px 0;clip-path:polygon(var(--fw) 0,calc(100% - var(--fw)) 0,100% 100%,0 100%)}
.rail-l{left:0;clip-path:polygon(0 0,100% var(--fw),100% calc(100% - var(--fw)),0 100%)}
.rail-r{right:0;background-position:0 400px;clip-path:polygon(0 var(--fw),100% 0,100% 100%,0 calc(100% - var(--fw)))}
.rail::after{content:'';position:absolute;inset:0}
.rail-t::after{background:linear-gradient(180deg,rgba(255,244,220,.45),rgba(255,244,220,.05) 30%,rgba(60,35,10,.05) 70%,rgba(60,35,10,.35))}
.rail-b::after{background:linear-gradient(180deg,rgba(255,244,220,.25),rgba(60,35,10,.12) 40%,rgba(50,28,8,.45))}
.rail-l::after{background:linear-gradient(90deg,rgba(255,244,220,.4),rgba(255,244,220,.05) 35%,rgba(60,35,10,.32))}
.rail-r::after{background:linear-gradient(90deg,rgba(255,244,220,.18),rgba(60,35,10,.12) 45%,rgba(50,28,8,.45))}
.cork{position:relative;overflow:hidden;padding:0 clamp(14px,3.5vw,56px) clamp(44px,5vw,68px);min-height:420px;background-color:#B4733E;background-blend-mode:multiply;background-image:url(assets/cork.jpg);background-size:512px 512px;box-shadow:inset 0 0 0 1px rgba(50,30,10,.55),inset 3px 5px 7px rgba(30,15,5,.55),inset 0 0 90px rgba(60,38,15,.3)}
.cork::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:4;background:radial-gradient(ellipse 70% 55% at 24% 10%,rgba(255,236,200,.18),transparent 70%),radial-gradient(ellipse 120% 90% at 50% 45%,transparent 55%,rgba(40,24,8,.28) 100%),linear-gradient(180deg,transparent 55%,rgba(40,24,8,.12));mix-blend-mode:multiply}
.cork::before{content:'';position:absolute;inset:0;pointer-events:none;z-index:4;background:radial-gradient(ellipse 55% 45% at 22% 8%,rgba(255,240,210,.22),transparent 70%);mix-blend-mode:soft-light}
.board-head{position:relative;z-index:3;display:flex;justify-content:center;padding-top:38px}

/* labels + pins */
.label-y,.label-w{display:inline-block;background-image:url(assets/paper-grain.png);color:#15120F;font-family:'Jost',Futura,'Century Gothic',sans-serif;font-weight:700;line-height:1.1}
.label-y{background-color:#E8C25A;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 1px 1px rgba(20,10,4,.4),0 5px 7px -3px rgba(20,10,4,.4)}
.label-w{background-color:#F6F2E8;font-size:15px;letter-spacing:.04em;padding:4px 10px;box-shadow:0 1px 1px rgba(20,10,4,.35),0 4px 5px -3px rgba(20,10,4,.35)}
.mailcall{padding:12px 30px;font-size:clamp(22px,3vw,34px);letter-spacing:.08em}
.pin{position:absolute;width:16px;height:16px;border-radius:50%;z-index:6;background:radial-gradient(circle at 34% 28%,rgba(255,255,255,.95) 0 1.6px,rgba(255,255,255,.45) 3px,transparent 6.5px),radial-gradient(circle at 50% 56%,#34302B 0 48%,#0D0B09 82%,rgba(20,10,5,.55) 100%);box-shadow:inset -2px -3px 4px rgba(0,0,0,.22),2px 3px 2px rgba(30,18,6,.35),7px 10px 7px -2px rgba(30,18,6,.32)}
.pin.sm{width:14px;height:14px}
.lift{filter:drop-shadow(1px 2px 1.5px rgba(30,18,6,.4)) drop-shadow(6px 14px 12px rgba(30,18,6,.28))}

/* volumes + sections */
.vol{position:relative;z-index:3;margin-top:64px;display:flex;align-items:center;gap:18px}
.vol .rule{flex:1;height:2px;background:rgba(20,10,4,.35);box-shadow:0 1px 0 rgba(255,235,200,.15)}
.vol h2{margin:0;padding:8px 20px;font-size:22px;letter-spacing:.1em;text-transform:uppercase}
.vol h2 span{font-weight:500;opacity:.7}
.vol-body{position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:52px 44px;margin-top:44px}
.camp{position:relative;max-width:100%}
.camp-head{display:flex;justify-content:center}
.camp-head h3{margin:0;padding:7px 18px;font-size:18px}
.grid{margin-top:26px;display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:26px 28px}
.cell{display:flex;flex-direction:column;align-items:center;gap:14px;width:200px}
.cardcell{width:200px}
.eph{width:250px;max-width:100%}

/* envelope */
.env-wrap{position:relative;width:100%;padding-top:12px}
.env-wrap>.pin{top:12px;left:50%;margin-left:-8px}
.env{position:relative;display:block;width:100%;aspect-ratio:5/6;border:0;padding:0;margin:0;background:transparent;cursor:pointer;text-align:left;font:inherit;color:var(--ink);transition:transform .3s ease;filter:drop-shadow(1px 2px 1.5px rgba(30,18,6,.38)) drop-shadow(6px 16px 12px rgba(30,18,6,.26))}
.env:hover,.env:focus-visible{transform:translateY(-4px)}
.env:hover .snap,.env:focus-visible .snap{transform:translate(-50%,-8px)}
.env:focus-visible{outline:3px solid #F2D27A;outline-offset:4px}
.env-cream{--paper:#F6EFDF;--inside:#D9CAAD}
.env-kraft{--paper:#C7A276;--inside:#A6825A}
.env-blue{--paper:#DDE4EA;--inside:#B7C3CE}
.env-letterhead{--paper:#F3ECDC;--inside:#D6C9AF}
.env-airmail{--paper:#F8F5EE;--inside:#D9D3C5}
.back{position:absolute;left:0;right:0;bottom:0;height:58%;background:var(--inside);box-shadow:inset 0 12px 14px -8px rgba(0,0,0,.35)}
.snap{position:absolute;left:50%;top:0;display:block;background-color:#FCF9F1;background-image:url(assets/paper-grain.png),linear-gradient(160deg,rgba(255,255,255,.5),transparent 40%,rgba(0,0,0,.05));padding:7px;box-shadow:0 1px 3px rgba(0,0,0,.3);transform:translateX(-50%);transition:transform .3s ease}
.snap img{display:block;width:100%;height:auto;background:#d9d2c3;min-height:40px}
.shape-p .snap{width:62%}.shape-l .snap{width:86%;top:5%}
.enclosed{display:flex;align-items:center;justify-content:center;aspect-ratio:3/2;font-family:'La Belle Aurore','Bradley Hand',cursive;font-size:16px;color:var(--ink);background:#F4EFE3}
.front{position:absolute;left:0;right:0;bottom:0;height:52%;display:block;background-color:var(--paper);background-image:url(assets/paper-grain.png),linear-gradient(180deg,rgba(0,0,0,.08),transparent 35%),linear-gradient(100deg,rgba(255,255,255,.18),transparent 30%,transparent 75%,rgba(0,0,0,.06));clip-path:polygon(0 0,50% 24%,100% 0,100% 100%,0 100%)}
.env-airmail .front::before{content:'';position:absolute;inset:0;border:6px solid transparent;border-image:repeating-linear-gradient(45deg,#B4412F 0 9px,#F8F5EE 9px 15px,#2F4E7A 15px 24px,#F8F5EE 24px 30px) 6;pointer-events:none}
.env-letterhead .front{background-image:url(assets/paper-grain.png),linear-gradient(180deg,rgba(0,0,0,.07),transparent 35%),linear-gradient(180deg,transparent calc(100% - 7px),#2E4636 calc(100% - 7px))}
.pm{position:absolute;right:10px;top:34%;width:50px;height:50px;border:1.5px solid rgba(43,42,38,.5);border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Special Elite',monospace;font-size:7px;line-height:1.2;letter-spacing:.05em;color:rgba(43,42,38,.62);transform:rotate(-14deg);padding:5px}
.addr{position:absolute;left:14px;right:66px;bottom:12px;display:block}
.to{font-family:'La Belle Aurore','Bradley Hand',cursive;font-size:15px;line-height:1.2;color:var(--ink);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tag{display:block;font-family:'Special Elite',monospace;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;border-top:1px solid rgba(43,42,38,.3);margin-top:4px;padding-top:4px}
.env-kraft .tag,.env-kraft .to{color:#2A2016}

/* cards + feed photos */
.cardcell{display:flex;justify-content:center;padding-top:14px}
.notecard{position:relative;width:100%;min-height:132px;padding:7px 14px 12px;background-color:#FBF9F1;background-image:url(assets/paper-grain.png),linear-gradient(180deg,transparent 27px,#D5715F 27px 28px,transparent 28px),repeating-linear-gradient(180deg,transparent 0 21px,#B9CDE0 21px 22px);background-position:0 0,0 0,0 29px;color:#23315A}
.notecard.title-card{background-color:#F3E2B0}
.nc-hand{font-family:'La Belle Aurore','Bradley Hand',cursive;font-size:15px;line-height:22px;color:var(--ink)}
.nc-type{font-family:'Special Elite',monospace;font-size:12.5px;line-height:22px;color:#26231F}
.nc-num{font-family:'Special Elite',monospace;font-size:10px;letter-spacing:.12em;color:#8B3A2E;min-height:20px;line-height:1.4;padding-top:3px}
.notecard>.pin{top:-5px}.notecard>.pin.l{left:10px}.notecard>.pin.r{right:10px}
.feedpic{position:relative;width:196px;max-width:100%;background-color:#FCF9F1;background-image:url(assets/paper-grain.png);padding:8px}
.feedpic img{display:block;width:100%;height:auto}
.tape{position:absolute;height:24px;width:66px;top:-9px;background:rgba(232,220,190,.72);background-image:url(assets/paper-grain.png);box-shadow:0 1px 1px rgba(0,0,0,.12);clip-path:polygon(3% 0,97% 4%,100% 30%,96% 55%,100% 85%,97% 100%,2% 96%,0 70%,4% 45%,0 18%)}
.tape.l{left:-16px;transform:rotate(-36deg)}.tape.r{right:-16px;transform:rotate(36deg)}
.small-cap{font-size:12px;letter-spacing:.08em;text-transform:uppercase}

/* keepsakes */
.eph{position:relative;display:flex;align-items:center;justify-content:center;min-height:230px}
.twill-navy{background-color:#21385E;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.07) 0 1px,transparent 1px 3px),repeating-linear-gradient(-45deg,rgba(0,0,0,.12) 0 1px,transparent 1px 3px)}
.twill-green{background-color:#2F5A3E;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.07) 0 1px,transparent 1px 3px),repeating-linear-gradient(-45deg,rgba(0,0,0,.12) 0 1px,transparent 1px 3px)}
.patch-round{position:relative;width:132px;height:132px;border-radius:50%;border:8px solid #B23A2C;box-shadow:inset 0 0 0 1px rgba(0,0,0,.35),inset 0 3px 6px rgba(0,0,0,.35),0 0 0 1px rgba(80,20,10,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.patch-round::before{content:'';position:absolute;inset:-8px;border-radius:50%;background:repeating-conic-gradient(rgba(255,255,255,.22) 0 1.6deg,rgba(0,0,0,.22) 1.6deg 3.2deg);-webkit-mask:radial-gradient(circle,transparent 57px,#000 58px);mask:radial-gradient(circle,transparent 57px,#000 58px)}
.patch-round::after{content:'';position:absolute;inset:7px;border-radius:50%;border:1.5px dashed rgba(240,228,205,.55)}
.thread{color:#F0E4CB;text-shadow:0 1px 0 rgba(0,0,0,.45),0 -1px 0 rgba(255,255,255,.18);font-family:'Anton',Impact,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.shield-o{position:relative;width:120px;height:140px;background:#E2C77F;clip-path:polygon(0 0,100% 0,100% 62%,50% 100%,0 62%)}
.shield-i{position:absolute;inset:6px;clip-path:polygon(0 0,100% 0,100% 62%,50% 100%,0 62%);display:flex;flex-direction:column;align-items:center;padding-top:18px;gap:8px}
.bracelet{position:relative;width:200px;max-width:60vw;height:16px;border-radius:3px;overflow:hidden;box-shadow:inset 0 2px 2px rgba(255,255,255,.25),inset 0 -2px 3px rgba(0,0,0,.3)}
.bracelet::before,.bracelet::after{content:'';position:absolute;left:0;right:0;height:50%;background:repeating-linear-gradient(90deg,#B4412F 0 8px,#F1E2C6 8px 16px,#2F4E7A 16px 24px,#E99AA8 24px 32px,#3E7A55 32px 40px);background-size:40px 100%}
.bracelet::before{top:0;transform:skewX(45deg)}.bracelet::after{bottom:0;transform:skewX(-45deg)}
.tuft{position:absolute;top:50%;width:26px;height:12px;margin-top:-6px;background:repeating-linear-gradient(180deg,#B4412F 0 2px,#F1E2C6 2px 4px,#2F4E7A 4px 6px,#E99AA8 6px 8px,#3E7A55 8px 10px);-webkit-mask:repeating-linear-gradient(180deg,#000 0 1.5px,transparent 1.5px 2px);mask:repeating-linear-gradient(180deg,#000 0 1.5px,transparent 1.5px 2px)}
.ticket{width:170px;padding:12px 14px 12px 20px;color:#5A1E2A;background-color:#E7A2AE;background-image:url(assets/paper-grain.png);-webkit-mask:radial-gradient(circle at 0 50%,transparent 5px,#000 5.5px) 0 0/100% 14px repeat-y;mask:radial-gradient(circle at 0 50%,transparent 5px,#000 5.5px) 0 0/100% 14px repeat-y}
.rosette{width:96px;height:96px;border-radius:50%;background:repeating-conic-gradient(#2F4E7A 0 6deg,#4D6F9E 6deg 9deg,#22395C 9deg 12deg)}
.rosette-c{position:absolute;left:50%;top:48px;width:52px;height:52px;margin:-26px 0 0 -26px;border-radius:50%;background-color:#F2E3BF;background-image:url(assets/paper-grain.png);box-shadow:inset 0 0 0 3px #C9A65A,0 2px 3px rgba(0,0,0,.35);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Special Elite',monospace;color:#2F4E7A;text-align:center;line-height:1.1}
.tail{position:absolute;top:80px;width:26px;height:74px;background:#2F4E7A;clip-path:polygon(0 0,100% 0,100% 100%,50% 82%,0 100%)}

.keep{position:relative;max-width:100%}
.keep img{display:block;width:100%;height:auto}
.notebook{position:relative;margin:0;width:min(400px,100%)}
.notebook img{display:block;width:100%;height:auto}
.pin.silver{background:radial-gradient(circle at 34% 28%,#fff 0 1.6px,rgba(255,255,255,.6) 3px,transparent 6.5px),radial-gradient(circle at 50% 56%,#D9DBDD 0 40%,#8E9296 80%,#4A4D50 100%)}
.footer-line{margin:28px 0 0;text-align:center;font-size:12px;letter-spacing:.1em;text-transform:uppercase;opacity:.65}

/* letter dialog */
.overlay{position:fixed;inset:0;z-index:20;background:rgba(32,26,18,.6);overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:clamp(16px,6vh,72px) 16px}
.overlay[hidden]{display:none}
.letter{position:relative;width:100%;max-width:680px;padding:clamp(28px,6vw,60px);box-shadow:0 30px 60px -20px rgba(0,0,0,.6);transform:rotate(-.5deg);background-color:#FBF8F1;background-image:repeating-linear-gradient(180deg,transparent 0 31px,#D6DEE6 31px 32px);background-position:0 18px}
.letter:focus{outline:none}
.close{position:absolute;top:10px;right:10px;width:44px;height:44px;border:0;background:transparent;cursor:pointer;color:var(--ink)}
.letter-meta{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);padding-right:40px}
.letter-body{max-width:400px}
.dear{margin:40px 0 0;font-family:'La Belle Aurore','Bradley Hand',cursive;font-size:24px;line-height:2;color:var(--ink)}
.letter h2{margin:8px 0 0;font-size:28px;line-height:1.25;font-weight:700}
.letter .sub{margin:12px 0 0;font-size:17px;line-height:1.85;font-style:italic}
.more{margin:28px 0 0;font-family:'La Belle Aurore','Bradley Hand',cursive;font-size:19px;line-height:2;color:var(--ink)}
.print{position:absolute;right:-28px;top:120px;width:200px;background:#FFFDF8;padding:10px 10px 34px;box-shadow:0 12px 20px -8px rgba(0,0,0,.45);transform:rotate(4deg)}
.print img{display:block;width:100%;height:auto}
.print .cap{margin-top:8px;text-align:center;font-family:'La Belle Aurore','Bradley Hand',cursive;font-size:14px;color:var(--ink)}
.letter-cta{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;margin-top:40px}
.access{font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.7}

@media (max-width:860px){.print{right:-12px;width:170px}}
@media (max-width:700px){
  .hidemob{display:none}
  .frame{--fw:13px}
  .print{position:static;margin:24px auto 0;width:180px;transform:rotate(2deg)}
  .vol h2{font-size:17px;padding:6px 12px}
  .vol-body{gap:40px 16px;margin-top:32px}
  .grid{gap:22px 14px}
  .cell,.cardcell,.eph{width:136px}
  .notecard{min-height:112px;padding:6px 10px 10px}
  .nc-hand{font-size:12.5px;line-height:20px}.nc-type{font-size:11px}
  .notecard.title-card div:nth-child(2){font-size:17px!important}
  .pm{width:40px;height:40px;font-size:6px;right:6px}
  .addr{left:10px;right:50px;bottom:9px}
  .to{font-size:12.5px}.tag{font-size:8px}
  .bracelet{width:96px}.ticket{width:136px;padding:10px 10px 10px 16px}
  .ticket div div:first-child{font-size:18px!important}
  .feedpic{padding:6px}
  .tape{width:52px}.tape.l{left:-10px}.tape.r{right:-10px}
  .camp-head h3{font-size:15px}
}
@media (prefers-reduced-motion:reduce){.env,.snap{transition:none}.env:hover,.env:focus-visible,.env:hover .snap,.env:focus-visible .snap{transform:none}.env:hover .snap,.env:focus-visible .snap{transform:translateX(-50%)}}
