:root{--bg: #fdf3f5;--paper: #fffaf7;--paper-pink: #ffe6ee;--paper-lilac: #f3e8ff;--ink: #3a1c2a;--ink-2: #77505f;--ink-3: #b28d9c;--line: #f0d2dc;--pink: #e4578b;--pink-deep: #c23a6e;--pink-soft: #f9c9d8;--plum: #7a3a5d;--her: var(--pink);--mo: var(--plum);--tape: rgba(255, 190, 212, .7);--shadow: 0 1px 1px rgba(58, 28, 42, .06), 0 10px 24px -14px rgba(122, 58, 93, .45);--sans: "Avenir Next", "Avenir", "Jost", system-ui, sans-serif;--serif: "Cormorant Garamond", Georgia, serif;--hand: "Caveat", "Bradley Hand", "Segoe Print", cursive;--grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .2 0 0 0 0 .3 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #1a0e14;--paper: #2a1820;--paper-pink: #3a1d2a;--paper-lilac: #2c1d36;--ink: #fde6ee;--ink-2: #d7aebf;--ink-3: #8e6878;--line: #432636;--pink: #ff80ad;--pink-deep: #ff5c96;--pink-soft: #5b2a40;--plum: #cf9ab8;--tape: rgba(255, 128, 173, .28);--shadow: 0 12px 28px -16px rgba(0, 0, 0, .75);color-scheme:dark}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--sans);background:var(--bg);color:var(--ink);min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}button,input,textarea{font:inherit;color:inherit}::selection{background:var(--pink-soft);color:var(--ink)}#sky{position:fixed;inset:0;width:100%;height:100%;z-index:-2;pointer-events:none;opacity:0;transition:opacity 1.2s ease}#sky.on{opacity:1}body:before{content:"";position:fixed;inset:0;z-index:-3;pointer-events:none;background:radial-gradient(90% 70% at 15% 0%,var(--pink-soft),transparent 60%),radial-gradient(70% 60% at 100% 100%,var(--paper-lilac),transparent 60%)}.wrap{max-width:860px;margin:0 auto;padding:0 18px 80px}header.top{display:flex;align-items:center;justify-content:space-between;padding:26px 0 6px}.mark{font-weight:300;font-size:21px;text-decoration:none;color:var(--ink);letter-spacing:.01em}.mark .plus{color:var(--pink);display:inline-block;cursor:pointer;transition:transform .4s cubic-bezier(.3,1.8,.5,1)}.mark .plus:hover{transform:rotate(90deg) scale(1.25)}nav a{position:relative;font-family:var(--hand);font-size:22px;color:var(--ink-2);text-decoration:none;margin-left:18px}nav a[aria-current=page]{color:var(--ink)}nav a[aria-current=page]:after{content:"";position:absolute;left:-4px;right:-4px;bottom:-2px;height:8px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M2 6 C 20 2, 35 9, 52 5 S 85 2, 98 6' fill='none' stroke='%23e4578b' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / 100% 100%}.eyebrow{display:inline-flex;align-items:center;gap:6px;font-family:var(--hand);font-size:25px;color:var(--pink-deep);line-height:1}.eyebrow:after{content:"";width:34px;height:16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 18'%3E%3Cpath d='M2 4 C 12 14, 24 15, 34 9 M 28 5 L 35 9 L 29 14' fill='none' stroke='%23e4578b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain}.hero{text-align:center;padding:50px 0 40px;position:relative}.hero .eyebrow{display:block}.hero .eyebrow:after{display:none}.days{font-weight:200;font-size:clamp(120px,31vw,250px);line-height:.9;letter-spacing:-.05em;font-variant-numeric:tabular-nums;cursor:pointer;user-select:none;-webkit-user-select:none;display:inline-block}.days .digit{display:inline-block;animation:hop .6s cubic-bezier(.3,1.7,.5,1) both;animation-delay:var(--d, 0s)}@keyframes hop{0%{transform:translateY(30%) scale(.85);opacity:0}}.days-label{font-family:var(--hand);font-size:40px;color:var(--pink);margin-top:-6px;position:relative;display:inline-block;transform:rotate(-4deg)}.days-label:after{content:"";position:absolute;left:-12px;right:-12px;bottom:-6px;height:10px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M2 7 Q 12 1, 22 7 T 42 7 T 62 7 T 82 7 T 98 6' fill='none' stroke='%23e4578b' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / 100% 100%}.clock{margin-top:16px;font-weight:300;font-size:15px;letter-spacing:.14em;color:var(--ink-2);font-variant-numeric:tabular-nums}.since{margin-top:4px;font-size:13px;color:var(--ink-3)}.days-secret{font-family:var(--hand);font-size:22px;color:var(--pink-deep);min-height:28px;margin-top:6px}.milestone{display:inline-block;margin-top:12px;padding:8px 16px 9px;background:var(--paper);border-radius:3px 14px 4px 12px;box-shadow:var(--shadow);transform:rotate(1.2deg);font-size:13px;color:var(--ink-2)}.milestone b{color:var(--pink-deep);font-weight:600}.banner{margin:18px auto 0;max-width:520px;padding:14px 18px;font-family:var(--hand);font-size:26px;line-height:1.15;color:var(--pink-deep);background:var(--paper-pink);border-radius:6px;box-shadow:var(--shadow);transform:rotate(-1.5deg);position:relative}section{margin-top:44px}section>.eyebrow{margin:0 0 14px 4px}.card{background:var(--paper) var(--grain);border-radius:4px;box-shadow:var(--shadow);position:relative}.tape:before{content:"";position:absolute;top:-11px;left:50%;width:92px;height:24px;z-index:2;transform:translate(-50%) rotate(var(--tape-r, -3deg));background:var(--tape);clip-path:polygon(3% 0,97% 4%,100% 50%,96% 100%,4% 96%,0 50%)}.statuses{display:grid;grid-template-columns:1fr 1fr;gap:22px}@media(max-width:620px){.statuses{grid-template-columns:1fr;gap:28px}}.status{padding:24px 22px 18px;transform:rotate(var(--tilt, -1deg));transition:transform .35s cubic-bezier(.3,1.6,.5,1)}.status:hover{transform:rotate(0) translateY(-3px)}.status.her{background-color:var(--paper-pink)}.status.him{background-color:var(--paper-lilac)}.status .who{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.status .name{font-family:var(--hand);font-size:30px;line-height:1;color:var(--ink)}.status .name small{font-size:19px;color:var(--ink-3)}.status .local{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}.status .text{margin-top:10px;font-weight:300;font-size:22px;line-height:1.3;min-height:1.3em;overflow-wrap:anywhere}.status .text.empty{color:var(--ink-3);font-family:var(--hand);font-size:24px}.status .meta{margin-top:10px;font-size:12px;color:var(--ink-3)}.status.mine .text{cursor:text}.status.mine .text:hover{color:var(--pink-deep)}.status input{margin-top:10px;width:100%;border:none;border-bottom:1.5px dashed var(--pink);background:transparent;font-weight:300;font-size:22px;padding:2px 0 6px;outline:none}.hint{font-size:12px;color:var(--ink-3);margin-top:6px}.status.wiggle{animation:wiggle .6s ease}@keyframes wiggle{20%{transform:rotate(3deg)}40%{transform:rotate(-3deg)}60%{transform:rotate(2deg)}80%{transform:rotate(-1deg)}}.goodnight{padding:30px 22px 26px;text-align:center;overflow:hidden}.moon{position:absolute;top:16px;right:22px;width:44px;height:44px;border-radius:50%;box-shadow:inset -11px 6px #f3c66b;transform:rotate(-20deg);animation:sway 6s ease-in-out infinite}@keyframes sway{50%{transform:rotate(-8deg) translateY(-3px)}}.zzz{position:absolute;top:12px;right:72px;font-family:var(--hand);color:var(--ink-3);font-size:20px}.zzz span{display:inline-block;animation:zz 2.8s ease-in-out infinite;animation-delay:calc(var(--i) * .45s);opacity:0}@keyframes zz{0%{opacity:0;transform:translateY(6px) scale(.7)}40%{opacity:1}to{opacity:0;transform:translate(10px,-16px) scale(1.2)}}.tally{display:flex;align-items:baseline;justify-content:center;gap:22px;font-weight:200;font-size:64px;line-height:1;font-variant-numeric:tabular-nums}.tally small{display:block;font-family:var(--hand);font-size:24px;margin-top:4px}.tally .vs{font-family:var(--hand);font-size:26px;color:var(--ink-3)}.bar{display:flex;height:7px;border-radius:99px;overflow:hidden;margin:18px auto 0;max-width:380px;background:var(--line)}.verdict{margin-top:14px;font-size:14px;color:var(--ink-2)}.late{margin-top:6px;font-family:var(--hand);font-size:22px;color:var(--pink-deep)}.nights{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;margin-top:22px}.night{width:22px;height:22px;border-radius:50% 46% 52% 48%;border:1.5px dashed var(--line);display:grid;place-items:center;font-size:10px;font-weight:600;color:#fff}.night.filled{border:none}.ask{margin-top:24px;padding-top:20px;border-top:1.5px dashed var(--line)}.ask p{font-family:var(--hand);font-size:28px;line-height:1.1}.ask .row{display:flex;gap:12px;justify-content:center;margin-top:14px;flex-wrap:wrap}.btn{border:1.5px solid var(--ink);background:var(--paper);border-radius:255px 15px 225px/15px 225px 15px 255px;padding:8px 22px;font-size:15px;cursor:pointer;box-shadow:2px 3px 0 var(--ink);transition:transform .15s ease,box-shadow .15s ease}.btn:hover{transform:translate(-1px,-1px) rotate(-1deg);box-shadow:3px 4px 0 var(--ink)}.btn:active{transform:translate(2px,3px);box-shadow:0 0 0 var(--ink)}.btn.primary{background:var(--pink);color:#fff}.btn.ghost{border:none;box-shadow:none;background:none;color:var(--ink-3);padding:4px 8px;font-size:13px;text-decoration:underline wavy;text-underline-offset:4px}.btn.ghost:hover{transform:none;color:var(--pink-deep)}.btn:disabled{opacity:.5;cursor:default}.page-title{padding:48px 0 6px;text-align:center}.page-title h1{font-family:var(--hand);font-weight:600;font-size:clamp(60px,13vw,96px);line-height:.9;transform:rotate(-3deg)}.page-title h1 .ell{color:var(--pink)}.page-title p{margin-top:18px;color:var(--ink-2);font-size:15px}.envelopes{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:26px 20px;padding-top:6px}.envelope{position:relative;aspect-ratio:1.22;padding:0;border:none;cursor:pointer;background:var(--paper-pink) var(--grain);border-radius:4px;box-shadow:var(--shadow);transform:rotate(var(--tilt, 0deg));transition:transform .3s cubic-bezier(.3,1.6,.5,1);text-align:left;perspective:600px}.envelope:hover{transform:rotate(0) translateY(-5px)}.envelope .flap{position:absolute;inset:0 0 auto;height:44%;background:color-mix(in srgb,var(--paper-pink) 78%,var(--pink) 22%);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .5s ease,opacity .5s ease;border-radius:4px 4px 0 0}.envelope.opened .flap{transform:rotateX(180deg);opacity:.35}.envelope .seal{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50% 44% 52% 47%;background:radial-gradient(circle at 35% 30%,#f07aa6,var(--pink-deep) 70%);color:#fff;display:grid;place-items:center;font-size:15px;box-shadow:0 3px 8px -2px var(--pink-deep),inset 0 -2px 4px #00000026;z-index:2}.envelope.opened .seal{opacity:0}.envelope.locked{cursor:default}.envelope.locked .seal{background:radial-gradient(circle at 35% 30%,#c9b3bd,#8e6878 70%);box-shadow:none}.envelope .label{position:absolute;left:14px;right:14px;bottom:12px}.envelope .ow{font-family:var(--hand);font-size:24px;line-height:1.05;color:var(--ink)}.envelope .from{font-size:12px;color:var(--ink-2);margin-top:3px}.envelope.opened .ow{color:var(--ink-2)}.envelope.opening{animation:lift .55s cubic-bezier(.4,0,.2,1) forwards}.envelope.opening .flap{transform:rotateX(180deg)}.envelope.opening .seal{animation:pop .45s ease forwards!important}@keyframes pop{40%{transform:translate(-50%,-50%) scale(1.5)}to{transform:translate(-50%,-50%) scale(0);opacity:0}}@keyframes lift{to{transform:translateY(-16px) scale(1.05) rotate(0)}}.empty-state{text-align:center;color:var(--ink-3);font-family:var(--hand);font-size:26px;padding:30px 10px}.compose{padding:26px 22px;transform:rotate(.4deg)}.compose label{display:block;font-family:var(--hand);font-size:22px;color:var(--pink-deep)}.ow-line{display:flex;align-items:baseline;gap:8px;margin-top:4px}.ow-line span{font-family:var(--hand);font-size:32px;white-space:nowrap}.ow-line input,.compose textarea,.compose input[type=date]{width:100%;border:none;background:transparent;outline:none}.ow-line input{font-family:var(--hand);font-size:32px;border-bottom:1.5px dashed var(--line);padding:0 0 4px}.ow-line input:focus{border-color:var(--pink)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.chip{border:1.2px solid var(--line);background:var(--paper);border-radius:99px 80px 99px 70px;padding:3px 11px;font-size:12px;color:var(--ink-2);cursor:pointer;transition:transform .2s ease}.chip:hover{border-color:var(--pink);color:var(--pink-deep);transform:rotate(-2deg) scale(1.05)}.compose textarea{margin-top:20px;min-height:204px;resize:vertical;font-family:var(--hand);font-size:26px;line-height:34px;padding:0 2px;background-image:repeating-linear-gradient(transparent 0 33px,var(--line) 33px 34px);background-attachment:local}.compose .foot{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin-top:16px;flex-wrap:wrap}.compose .foot .when{flex:1;min-width:180px}.compose input[type=date]{margin-top:2px;font-size:15px;max-width:220px;border-bottom:1.5px dashed var(--line);padding-bottom:4px}.sent{list-style:none}.sent li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:12px 4px;border-bottom:1.5px dashed var(--line)}.sent li:last-child{border-bottom:none}.sent .ow{font-family:var(--hand);font-size:24px;background:none;border:none;cursor:pointer;text-align:left}.sent .state{font-size:12px;color:var(--ink-3);white-space:nowrap}.sent .state.read{color:var(--pink-deep)}dialog.reader{border:none;background:transparent;width:min(620px,calc(100vw - 28px));margin:auto;color:var(--ink);overflow:visible}dialog.reader::backdrop{background:#280c1a73;backdrop-filter:blur(6px)}.paper{background-color:var(--paper);background-image:var(--grain),repeating-linear-gradient(transparent 0 35px,var(--line) 35px 36px);border-radius:3px;padding:40px 32px 28px;box-shadow:0 30px 80px -30px #00000080;animation:unfold .6s cubic-bezier(.2,.8,.2,1);max-height:85vh;overflow:auto;transform:rotate(-.6deg)}@keyframes unfold{0%{opacity:0;transform:translateY(40px) rotate(4deg) scale(.95)}}.paper .ow{font-family:var(--hand);color:var(--pink-deep);font-size:26px}.paper .body{font-family:var(--hand);font-size:27px;line-height:36px;margin-top:10px;white-space:pre-wrap;overflow-wrap:anywhere}.paper .sig{margin-top:22px;font-family:var(--hand);font-size:24px;color:var(--ink-2);text-align:right}.paper .close{margin-top:20px;text-align:right}footer{text-align:center;margin-top:70px;font-family:var(--hand);font-size:20px;color:var(--ink-3)}footer span{cursor:default;user-select:none;-webkit-user-select:none}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%) rotate(-1deg);background:var(--ink);color:var(--bg);padding:7px 18px 9px;border-radius:14px 4px;font-family:var(--hand);font-size:22px;opacity:0;transition:opacity .25s ease;pointer-events:none;z-index:150}.toast.show{opacity:1}.demo-flag{position:fixed;top:10px;right:10px;font-size:11px;background:var(--ink);color:var(--bg);padding:3px 8px;border-radius:6px;opacity:.7;z-index:60}.rise{opacity:0;transform:translateY(16px);animation:rise .8s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:var(--d, 0s)}@keyframes rise{to{opacity:1;transform:none}}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.3)}30%{transform:scale(1)}45%{transform:scale(1.15)}}.envelope.sealed .seal{animation:seal-beat 2.4s ease-in-out infinite}@keyframes seal-beat{0%,to{transform:translate(-50%,-50%) scale(1)}15%{transform:translate(-50%,-50%) scale(1.18)}30%{transform:translate(-50%,-50%) scale(1)}45%{transform:translate(-50%,-50%) scale(1.1)}}.pop-in{animation:popin .6s cubic-bezier(.3,1.6,.5,1) both;animation-delay:var(--d, 0s)}@keyframes popin{0%{opacity:0;transform:translateY(24px) rotate(calc(var(--tilt, 0deg) * -4)) scale(.9)}}.rise .night{animation:dot .4s cubic-bezier(.3,1.6,.5,1) both;animation-delay:var(--d, 0s)}@keyframes dot{0%{transform:scale(0);opacity:0}}.rise .bar span{animation:grow 1s cubic-bezier(.2,.8,.2,1) both .3s;transform-origin:left}.rise .bar span+span{transform-origin:right}@keyframes grow{0%{transform:scaleX(0)}}.status .text.fresh{animation:swap .5s cubic-bezier(.2,.8,.2,1)}@keyframes swap{0%{opacity:0;transform:translateY(8px);filter:blur(3px)}}.drift{position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden}.drift span{position:absolute;bottom:-40px;color:var(--pink);opacity:0;animation:drift linear infinite}@keyframes drift{0%{transform:translateY(0) translate(0) rotate(-10deg);opacity:0}10%{opacity:var(--o, .25)}50%{transform:translateY(-55vh) translate(var(--x, 20px)) rotate(10deg)}90%{opacity:var(--o, .25)}to{transform:translateY(-110vh) translate(0) rotate(-10deg);opacity:0}}.burst{position:fixed;pointer-events:none;z-index:99;color:var(--pink);animation:burst .9s cubic-bezier(.2,.7,.3,1) forwards}@keyframes burst{0%{transform:translate(-50%,-50%) scale(.4);opacity:1}to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1) rotate(var(--r));opacity:0}}.rain{position:fixed;top:-50px;pointer-events:none;z-index:98;color:var(--pink);font-family:var(--hand);animation:fall linear forwards;white-space:nowrap}@keyframes fall{to{transform:translateY(calc(100vh + 100px)) rotate(var(--r, 30deg))}}.trail{position:fixed;pointer-events:none;z-index:97;color:var(--pink);font-size:11px;animation:trail .9s ease-out forwards}@keyframes trail{0%{transform:translate(-50%,-50%)}to{transform:translate(-50%,-40px) scale(.4);opacity:0}}.secret{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:24px;background:#280c1a80;backdrop-filter:blur(8px);animation:fade .4s ease;cursor:pointer}@keyframes fade{0%{opacity:0}}.secret .note{max-width:420px;background:var(--paper-pink) var(--grain);padding:34px 28px 26px;border-radius:4px;box-shadow:0 30px 70px -20px #00000080;text-align:center;font-family:var(--hand);font-size:32px;line-height:1.15;color:var(--ink);animation:unfold .6s cubic-bezier(.2,.8,.2,1);transform:rotate(-2deg);position:relative}.secret .note small{display:block;font-size:20px;color:var(--ink-2);margin-top:14px}body.at-door .wrap{max-width:none;padding:0}.door{min-height:100vh;min-height:100dvh;display:grid;place-items:center;text-align:center;padding:40px 24px;position:relative;overflow:hidden}.door-inner{position:relative;z-index:1}.big-heart{font-size:96px;line-height:1;color:var(--pink);cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.big-heart span{display:inline-block;animation:beat 1.8s ease-in-out infinite;filter:drop-shadow(0 16px 26px rgba(228,87,139,.45))}.door-mark{font-weight:200;font-size:clamp(58px,14vw,130px);letter-spacing:-.02em;line-height:1;margin-top:14px}.door-mark .plus{color:var(--pink);display:inline-block;animation:spin-in 1.4s cubic-bezier(.3,1.6,.5,1) both .8s}@keyframes spin-in{0%{transform:rotate(-270deg) scale(0)}}.door-sub{font-family:var(--hand);font-size:clamp(26px,5vw,34px);color:var(--ink-2);margin-top:10px;transform:rotate(-2deg)}.bubble{font-family:var(--hand);font-size:24px;color:var(--pink-deep);min-height:30px;margin-top:4px}.knock{margin-top:22px;border:1.5px solid var(--ink);border-radius:255px 15px 225px/15px 225px 15px 255px;padding:12px 34px;font-size:18px;background:var(--pink);color:#fff;cursor:pointer;box-shadow:3px 4px 0 var(--ink);transition:transform .15s ease,box-shadow .15s ease}.knock:hover{transform:translate(-1px,-2px) rotate(-1.5deg);box-shadow:4px 6px 0 var(--ink)}.knock:active{transform:translate(3px,4px);box-shadow:0 0 0 var(--ink)}.knock .h{display:inline-block;animation:beat 1.4s ease-in-out infinite}.door-note{margin-top:18px;font-size:13px;letter-spacing:.06em;color:var(--ink-3)}.door.opening .door-inner{animation:through .9s cubic-bezier(.6,0,.4,1) forwards}@keyframes through{to{transform:scale(1.15);opacity:0;filter:blur(6px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.rise{opacity:1;transform:none}.drift,.trail{display:none}}.door-hint{margin-top:6px;font-family:var(--hand);font-size:19px;color:var(--ink-3)}.keys .keys-p{margin-top:8px;color:var(--ink-2);font-size:15px}.keys .row{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}.keys-out{margin-top:18px}.keys-out p{font-family:var(--hand);font-size:22px}.keys-link{display:flex;gap:8px;margin-top:6px}.keys-link input{flex:1;min-width:0;border:1.5px dashed var(--line);background:var(--paper);border-radius:6px;padding:6px 10px;font-size:13px}.keys .close{display:flex;justify-content:space-between;align-items:center}header.top{flex-wrap:wrap;gap:4px 12px}nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0 14px}nav a{margin-left:0}@media(max-width:560px){header.top{flex-direction:column;align-items:flex-start}nav{justify-content:flex-start;gap:0 12px}nav a{font-size:21px}}.page-title .add{margin-top:18px}.btn.small{padding:5px 14px;font-size:13px}.form{display:grid;gap:4px;margin-top:14px}.form label{font-family:var(--hand);font-size:20px;color:var(--pink-deep);margin-top:8px}.form input,.form textarea{width:100%;border:none;border-bottom:1.5px dashed var(--line);background:transparent;outline:none;padding:4px 2px 6px;font-size:17px}.form input:focus,.form textarea:focus{border-color:var(--pink)}.form .f-title{font-family:var(--hand);font-size:30px}.form textarea{min-height:110px;resize:vertical;font-family:var(--hand);font-size:24px;line-height:1.3}.picker{margin-top:14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.pick-preview img{max-height:120px;max-width:100%;border-radius:3px;box-shadow:var(--shadow);transform:rotate(-1.5deg)}.paper .close{display:flex;justify-content:space-between;align-items:center;gap:10px}.paper .close:only-child,.paper .close>:only-child{margin-left:auto}.exhibit-img{display:block;width:100%;max-height:60vh;object-fit:contain;margin-top:14px;border-radius:3px;background:var(--paper-pink)}.exhibit-title{font-family:var(--hand);font-weight:600;font-size:38px;line-height:1.05;margin-top:12px}.timeline{position:relative;margin-top:30px;padding-bottom:10px}.timeline:before{content:"";position:absolute;top:0;bottom:30px;left:50%;width:14px;transform:translate(-50%);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 60'%3E%3Cpath d='M7 0 C 2 15, 12 30, 7 45 S 4 58, 7 60' fill='none' stroke='%23e4578b' stroke-width='1.6' stroke-dasharray='4 5' stroke-linecap='round'/%3E%3C/svg%3E") repeat-y center / 14px 60px;opacity:.6}.year{text-align:center;margin:26px 0 14px;position:relative}.year span{font-family:var(--hand);font-weight:600;font-size:34px;color:var(--pink-deep);background:var(--bg);padding:0 12px;border-radius:20px}.polaroid{position:relative;display:block;width:min(300px,44%);border:none;cursor:pointer;text-align:center;background:#fffdfb var(--grain);padding:12px 12px 14px;border-radius:2px;box-shadow:0 2px 3px #0000000f,0 16px 30px -18px #7a3a5d8c;transform:rotate(var(--tilt, 0deg));transition:transform .3s cubic-bezier(.3,1.6,.5,1);margin:-10px 0 0;color:#3a1c2a}.polaroid:hover{transform:rotate(0) scale(1.03);z-index:2}.polaroid.left{margin-right:auto;margin-left:2%}.polaroid.right{margin-left:auto;margin-right:2%}.polaroid img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:var(--paper-pink)}.polaroid .doodle-date{display:grid;place-items:center;width:100%;aspect-ratio:1.3;background:#ffe6ee var(--grain);font-family:var(--hand);font-size:40px;color:#c23a6e}.polaroid .cap{display:block;font-family:var(--hand);font-size:25px;line-height:1.05;margin-top:10px}.polaroid .meta{display:block;font-size:11px;letter-spacing:.06em;color:#a07d8c;margin-top:4px}.tape-bit{position:absolute;top:-10px;left:50%;width:70px;height:22px;transform:translate(-50%) rotate(-4deg);background:#ffbed4bf;clip-path:polygon(3% 0,97% 4%,100% 50%,96% 100%,4% 96%,0 50%)}.here{text-align:center;font-family:var(--hand);font-size:30px;color:var(--pink-deep);margin-top:26px;position:relative}@media(max-width:620px){.timeline:before{left:22px}.polaroid,.polaroid.left,.polaroid.right{width:calc(100% - 52px);margin:18px 0 0 46px}.year{text-align:left}}.dict-book{padding:26px 24px 18px}.search{width:100%;border:none;border-bottom:1.5px dashed var(--line);background:transparent;outline:none;font-family:var(--hand);font-size:26px;padding:2px 2px 6px}.search:focus{border-color:var(--pink)}.letter-group{margin-top:22px;display:grid;grid-template-columns:54px 1fr;gap:0 10px}.big-letter{font-weight:200;font-size:54px;line-height:.9;color:var(--pink);grid-row:span 99}.word{padding:10px 0 14px;border-bottom:1.5px dashed var(--line);cursor:pointer}.word:last-child{border-bottom:none}.word:hover .w-title{color:var(--pink-deep)}.w-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.w-title{font-weight:600;font-size:22px;letter-spacing:-.01em;transition:color .2s}.w-sub{font-style:italic;font-size:14px;color:var(--ink-2)}.w-def{margin-top:4px;font-size:16px}.w-ex{margin-top:4px;font-family:var(--hand);font-size:22px;color:var(--ink-2)}.w-by{margin-top:4px;font-size:11px;color:var(--ink-3);letter-spacing:.05em}.notebook{padding:26px 22px 18px;background-image:var(--grain),repeating-linear-gradient(transparent 0 47px,var(--line) 47px 48px);background-position:0 0,0 22px}.add-row,.list li{display:flex;align-items:center;gap:12px;min-height:48px}.new-item{flex:1;min-width:0;border:none;background:transparent;outline:none;font-family:var(--hand);font-size:28px;padding:4px 0}.box{flex:none;width:24px;height:24px;border:2px solid var(--ink);background:transparent;cursor:pointer;border-radius:3px 6px 4px 7px;transform:rotate(-3deg);transition:transform .2s,background .2s}.add-row .box{border-style:dashed;border-color:var(--ink-3);cursor:default}.list{list-style:none}.list li .box:hover{background:var(--pink-soft);transform:rotate(4deg) scale(1.1)}.list li .t{flex:1;font-family:var(--hand);font-size:28px;line-height:1.1}.list li .who{font-size:11px;color:var(--ink-3)}.list li .x{font-size:20px;text-decoration:none;opacity:.5}.list li .x:hover{opacity:1}.done-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:26px 20px;padding-top:10px}.done-wall .polaroid{width:auto;margin:0}.stamp{position:absolute;right:10px;bottom:60px;transform:rotate(-12deg);border:2px solid #c23a6e;color:#c23a6e;border-radius:6px;padding:1px 8px;font-family:var(--hand);font-weight:600;font-size:18px;background:#ffffffb3}.page-title .add{margin-bottom:22px}@media(max-width:620px){.polaroid,.polaroid.left,.polaroid.right{margin-top:28px}}
