@font-face{font-family:SFU Century Schoolbook;src:url(/fonts/sfu-century-schoolbook-bt-roman.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--text:#45333e;--subtext:#9a3b72;--accent:#ff67a1;--accent-soft:#ff9cc9;--intro:#ff97bf;--bg:radial-gradient(circle at 20% 20%, #ffd7ec, #ffc3e1 38%), radial-gradient(circle at 80% 0%, #ffb9db, #ffe7f4 42%), radial-gradient(circle at 50% 80%, #ffe0f1, #fff1f9 55%);--panel:#fffc;--border:#ff8cc28c;--shadow:0 10px 26px #ff70b040;--note-bg:#fff3fa;--timeline-line:#ffb3d6;--text-glow:0 2px 26px #ffc0de;color:var(--text);background-color:#fff1f9;font-family:SFU Century Schoolbook,Century Gothic,CenturyGothic,AppleGothic,Century Schoolbook,Century,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*,:before,:after{box-sizing:border-box}body{min-height:100vh;color:var(--text);text-shadow:0 1px 3px #00000029;isolation:isolate;background-color:#0000;margin:0;position:relative;overflow-x:hidden}body:before{content:"";will-change:transform;z-index:0;background-image:url(/images/background.jpg);background-position:75% 20%;background-repeat:no-repeat;background-size:cover;position:fixed;inset:0;transform:translateZ(0)}body:after{content:"";pointer-events:none;z-index:1;background:linear-gradient(#00000073,#0000008c);position:fixed;inset:0}html{background-color:#0000;overflow-x:hidden}main.app{text-align:center;z-index:2;flex-direction:column;justify-content:center;align-items:center;gap:32px;width:100%;max-width:100vw;min-height:100vh;padding:64px 24px 72px;display:flex;position:relative;overflow-x:hidden}.hero-spacer{width:100%;height:clamp(140px,18vh,220px)}.loading-experience{z-index:1300;color:#fff;pointer-events:none;background:radial-gradient(circle at 52% 45%,#ffa8d357,#0000 40%),linear-gradient(135deg,#3c0f31,#ff67a1);place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.loading-name-block{text-align:center;filter:drop-shadow(0 18px 28px #3a0c2d59);flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0 clamp(12px,2.4vw,34px);max-width:96vw;padding:clamp(22px,4vw,56px);display:flex}.loading-name-block span{color:#ffffff0f;letter-spacing:0;white-space:nowrap;-webkit-text-stroke:1px #ffffffb8;font-family:Homemade Apple,SFU Century Schoolbook,cursive;font-size:clamp(32px,7.5vw,104px);font-weight:400;line-height:1.55;display:inline-block;position:relative}.loading-name-block span:after{content:attr(data-text);color:#fff;clip-path:inset(0 100% 0 0);-webkit-text-stroke:0;padding:.16em .22em .2em;animation:1.5s ease-in-out forwards letterFill;position:absolute;inset:-.16em -.22em -.2em;overflow:hidden}.loading-name-block span:nth-child(2):after{animation-delay:1.5s}@keyframes letterFill{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}.memory-intro{z-index:1200;pointer-events:none;-webkit-backdrop-filter:blur(7px)saturate(.72)brightness(.7);backdrop-filter:blur(7px)saturate(.72)brightness(.7);background:radial-gradient(circle at 50% 46%,#ffd2ea57,#0000 24%),#0d040cb8;place-items:center;display:grid;position:fixed;inset:0}.memory-intro-stack{aspect-ratio:4/5;width:clamp(190px,30vw,340px);position:relative;transform:translateY(-2vh)}.memory-intro-stack img{object-fit:cover;-webkit-user-select:none;user-select:none;background:#fff;border:8px solid #ffffffeb;border-bottom-width:30px;border-radius:10px;width:100%;height:100%;position:absolute;inset:0;box-shadow:0 22px 44px #00000047,0 0 28px #ff67a138}.lang-toggle{z-index:10;cursor:pointer;will-change:transform;background:0 0;border:none;padding:0;transition:transform .14s,background .14s,box-shadow .16s;position:fixed;top:18px;right:18px}.lang-pill{border:1px solid var(--border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffe6;border-radius:14px;grid-template-columns:1fr 1fr;align-items:center;min-width:92px;padding:4px;display:grid;position:relative}.lang-label{text-align:center;color:var(--subtext);z-index:2;-webkit-user-select:none;user-select:none;padding:6px 2px;font-size:12px;font-weight:700;position:relative}.lang-label.active{color:var(--accent)}.lang-thumb{z-index:1;background:#fffffff2;border-radius:10px;width:calc(50% - 4px);position:absolute;inset:4px;box-shadow:0 10px 20px #0000001f}h1{letter-spacing:0;color:var(--accent);margin:8px 0 10px;font-family:SFU Century Schoolbook,Century Schoolbook,Century,Century Gothic,serif;font-size:clamp(42px,8vw,72px);line-height:.98}h1,h2,.sub,.eyebrow,.sentence-text,.sentence-list,.timeline-note{text-shadow:var(--text-glow)}h2{color:var(--intro);margin:0;font-size:clamp(28px,5vw,42px);line-height:1.08}.sub{color:var(--subtext);margin:0;font-size:clamp(17px,2.8vw,22px);line-height:1.35}.eyebrow{color:var(--accent-soft);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:13px;font-weight:800}.sentence{text-align:center;max-width:880px}.sentence *{text-shadow:var(--text-glow)}.sentence-text{color:var(--text);margin:0;font-size:clamp(23px,4.6vw,34px);line-height:1.45}.sentence-intro{color:var(--intro)}.sentence-list{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:4px;display:flex}.unit{color:var(--accent);white-space:nowrap;perspective:800px;align-items:baseline;gap:6px;font-size:1.08em;font-weight:700;display:inline-flex}.unit-number{font-variant-numeric:tabular-nums;letter-spacing:0;gap:0;display:inline-flex}.unit-digit{text-align:center;backface-visibility:hidden;min-width:.6em;display:inline-block}.unit-digit.flip{transform-origin:bottom;animation:.52s flipChange}@keyframes flipChange{0%{opacity:1;transform:rotateX(0)}45%{opacity:.6;transform:rotateX(-90deg)}55%{opacity:.6;transform:rotateX(-90deg)}to{opacity:1;transform:rotateX(0)}}.note{background:var(--note-bg);border:1px solid var(--border);text-align:center;max-width:640px;color:var(--text);box-shadow:var(--shadow);border-radius:16px;padding:16px 20px}.note p{margin:0;font-size:clamp(16px,2.4vw,20px);line-height:1.45}.note-text{white-space:nowrap;border-right:2px solid #0000;max-width:100%;padding-right:2px;display:inline-block;position:relative;overflow:hidden}@keyframes caret{0%,to{border-color:#0000}50%{border-color:var(--accent)}}.note-text.typing,.note-text.erasing{animation:.9s step-end infinite caret}.note-text.done{border-right-color:var(--accent);animation:1.2s step-end infinite caret}.memory-widget{z-index:11;justify-items:start;gap:8px;display:grid;position:fixed;top:16px;left:164px}.memory-bell{width:44px;height:44px;box-shadow:var(--shadow);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffdb;border:1px solid #ff8cc2b8;border-radius:14px;place-items:center;padding:0;transition:box-shadow .16s,transform .16s;display:grid;position:relative}.memory-bell:hover,.memory-bell:focus-visible{transform:translateY(-1px);box-shadow:0 14px 30px #ff67a14d}.memory-bell:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.memory-bell>span:first-child{font-size:20px;line-height:1}.memory-count{background:var(--accent);color:#fff;border-radius:999px;place-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;line-height:1;display:grid;position:absolute;top:-5px;right:-5px;box-shadow:0 6px 14px #ff67a159}.memory-popover{width:min(280px,100vw - 32px);max-height:min(420px,100vh - 82px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffdb;border:1px solid #ff8cc2b8;border-radius:14px;gap:8px;padding:8px;display:grid;overflow:auto}.memory-preview{width:100%;color:var(--text);text-align:left;cursor:pointer;background:#fff4fad1;border:1px solid #ff8cc26b;border-radius:12px;gap:2px;padding:10px 12px;transition:background .16s,border-color .16s,box-shadow .16s,transform .16s;display:grid}.memory-preview:hover,.memory-preview:focus-visible{background:#fffffff5;border-color:#ff67a194;transform:translateY(-1px);box-shadow:0 14px 30px #ff67a14d}.memory-preview:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.memory-preview-badge{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:800}.memory-preview strong{color:var(--text);overflow-wrap:anywhere;font-size:15px;line-height:1.15}.memory-preview span:last-child{color:var(--subtext);font-size:12px}.memory-mode-button{z-index:11;color:var(--accent);box-shadow:var(--shadow);cursor:pointer;font:inherit;background:#ffffffdb;border:1px solid #ff67a175;border-radius:14px;padding:10px 13px;transition:box-shadow .16s,transform .16s;position:fixed;top:16px;left:16px}.memory-mode-button:hover,.memory-mode-button:focus-visible{transform:translateY(-2px);box-shadow:0 16px 34px #ff67a14d}.memory-mode-button:disabled{cursor:not-allowed;opacity:.58}.memory-mode-close{color:#fff;cursor:pointer;background:#ffffff2e;border:1px solid #ffffff6b;place-items:center;display:grid}.story-progress{z-index:9;max-height:min(68vh,560px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;pointer-events:none;background:#48183a66;border:1px solid #ffffff47;border-radius:999px;align-items:center;gap:9px;padding:13px 8px;transition:opacity .18s,transform .18s;display:grid;position:fixed;top:50%;left:18px;overflow:visible;transform:translate(-18px,-50%)}.story-progress-visible{opacity:1;pointer-events:auto;transform:translateY(-50%)}.story-progress-line{background:linear-gradient(#ffffff29,#ff67a1b8,#ffffff29);width:1px;position:absolute;top:24px;bottom:24px;left:50%;transform:translate(-50%)}.story-progress-step{z-index:1;color:#ffffffe0;cursor:pointer;width:30px;min-width:30px;min-height:18px;font:inherit;background:0 0;border:0;place-items:center;padding:0;display:grid;position:relative}.story-progress-step span:first-child{filter:drop-shadow(0 0 8px #ffffffbf)drop-shadow(0 0 18px #ff67a1b3);place-items:center;line-height:1;transition:color .14s,transform .14s;display:grid}.story-progress-step.is-past,.story-progress-step.is-future{opacity:.72}.story-progress-step.is-far{opacity:.48;min-height:12px}.story-progress-step.is-distant{opacity:.25;min-height:7px}.story-progress-step.is-far span:first-child{transform:scale(.72)}.story-progress-step.is-distant span:first-child{transform:scale(.46)}.story-progress-step.step-event span:first-child{font-size:10px}.story-progress-step.step-month span:first-child{font-size:18px}.story-progress-step.step-year span:first-child{font-size:27px}.story-progress-step:hover span:first-child,.story-progress-step:focus-visible span:first-child,.story-progress-step.active span:first-child{color:#fff3fb;transform:scale(1.22)}.story-progress-step.is-far:hover span:first-child,.story-progress-step.is-far:focus-visible span:first-child,.story-progress-step.is-distant:hover span:first-child,.story-progress-step.is-distant:focus-visible span:first-child{transform:scale(1)}.story-progress-step.active span:first-child{color:var(--accent)}.story-progress-label{width:max-content;max-width:min(220px,100vw - 76px);color:var(--subtext);opacity:0;pointer-events:none;text-align:left;text-shadow:none;text-overflow:ellipsis;white-space:nowrap;writing-mode:horizontal-tb;background:#ffffffe6;border:1px solid #ff8cc27a;border-radius:10px;padding:5px 8px;font-size:11px;font-weight:700;line-height:1.16;transition:opacity .14s,transform .14s;position:absolute;left:calc(100% + 9px);overflow:hidden;transform:translate(-4px);box-shadow:0 10px 20px #ff67a129}.story-progress-step.step-year .story-progress-label,.story-progress-step:hover .story-progress-label,.story-progress-step:focus-visible .story-progress-label{opacity:1;transform:translate(0)}.memory-mode{z-index:1500;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:radial-gradient(circle at 50% 44%,#ffcde82e,#0000 34%),#140813e6;place-items:center;padding:clamp(18px,4vw,42px);display:grid;position:fixed;inset:0}.memory-mode-stage{grid-template-columns:minmax(180px,.72fr) minmax(260px,1.05fr) minmax(190px,.6fr);grid-template-areas:"pile focus side";align-items:center;gap:22px clamp(32px,6vw,74px);width:min(92vw,1180px);display:grid}.memory-mode-pile{grid-area:pile;justify-items:center;gap:32px;display:grid}.memory-mode-deck{aspect-ratio:4/5;opacity:.9;width:clamp(170px,22vw,270px);position:relative}.memory-mode-deck img{object-fit:cover;background:#fff;border:7px solid #ffffffe6;border-bottom-width:26px;border-radius:10px;width:100%;height:100%;position:absolute;inset:0;box-shadow:0 18px 38px #00000047,0 0 22px #ff67a124}.memory-mode-count{color:var(--accent);text-shadow:0 1px 10px #ffffff80;background:#ffffffe6;border:1px solid #ff8cc2b8;border-radius:999px;margin-top:10px;padding:8px 13px;font-size:14px;font-weight:700;box-shadow:0 10px 24px #ff67a13d}.memory-mode-focus{grid-area:focus;place-items:center;min-width:0;display:grid}.memory-mode-current{background:#fff;border:8px solid #fffffff0;border-bottom-width:34px;border-radius:16px;width:min(44vw,520px);max-height:72vh;margin:0;padding:0;display:block;position:relative;overflow:hidden;box-shadow:0 30px 86px #0000008f,0 0 34px #ff67a140}.memory-mode-current img{object-fit:contain;background:#150711;width:100%;max-height:calc(72vh - 42px);display:block}.memory-mode-side{grid-area:side;align-content:center;gap:14px;min-width:0;display:grid}.memory-mode-info{color:var(--subtext);text-align:left;text-shadow:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffdb;border:1px solid #ffffff7a;border-radius:12px;gap:5px;padding:13px 14px;display:grid}.memory-mode-info.is-empty{color:#ffffffd1;background:#ffffff24}.memory-mode-info strong{color:var(--accent);font-size:clamp(18px,3vw,26px);line-height:1.05}.memory-mode-info span{font-size:13px}.memory-mode-placeholder{aspect-ratio:4/5;color:#ffffffdb;text-align:center;border:1px dashed #fff6;border-radius:18px;place-items:center;width:min(76vw,420px);font-size:clamp(24px,4vw,38px);display:grid}.memory-mode-pull{color:var(--accent);box-shadow:var(--shadow);cursor:pointer;font:inherit;background:#ffffffe6;border:1px solid #ffffff6b;border-radius:14px;padding:11px 16px;transition:box-shadow .16s,transform .16s}.memory-mode-pull:hover,.memory-mode-pull:focus-visible{transform:translateY(-2px);box-shadow:0 18px 38px #ff67a152}.memory-mode-pull:disabled{cursor:not-allowed;opacity:.58}.memory-mode-close{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:#fff;text-shadow:0 1px 5px #00000080;background:#fff3;border:1px solid #ffffffb8;border-radius:8px;width:34px;height:34px;min-height:34px;padding:0;font-size:22px;font-weight:700;line-height:1;position:absolute;top:18px;right:18px;box-shadow:0 4px 14px #0000002e}.totals{background:var(--panel);border:1px solid var(--border);width:min(960px,100%);box-shadow:var(--shadow);border-radius:14px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:clamp(8px,3vw,12px);padding:clamp(10px,3vw,14px) clamp(12px,5vw,16px);display:grid}.totals-heading{color:var(--intro);letter-spacing:.01em;margin:12px 0 -2px;font-size:clamp(24px,4.2vw,34px);line-height:1.12}.timeline{align-items:start;gap:16px;width:min(1100px,100%);margin:0 auto;display:grid}.timeline-list{justify-items:center;gap:18px;width:100%;display:grid;position:relative}.total-item{place-items:center;gap:4px;display:grid}.total-value{color:var(--accent);font-size:clamp(22px,5vw,30px);font-weight:800;line-height:1;display:inline-flex}.total-label{letter-spacing:.02em;color:var(--subtext);font-size:clamp(12px,2.6vw,15px)}.total-digit{text-align:center;backface-visibility:hidden;transform-origin:bottom;min-width:.75em;padding:4px 0;display:inline-block;position:relative}.total-digit.flip{animation:.52s flipChange}.timeline-card.vertical{--timeline-pad:clamp(12px, 3.6vw, 16px);--timeline-gutter:clamp(26px, 10vw, 42px);--card-bg:linear-gradient(#ffffffc7, #ffffffc7), var(--panel);--card-border:var(--border);--card-glow:var(--shadow);--card-mark:#ff67a11f;background:var(--card-bg);border:1px solid var(--card-border);padding:var(--timeline-pad);box-shadow:var(--card-glow);box-sizing:border-box;cursor:default;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:16px;gap:8px;width:min(680px,92vw);display:grid;position:relative;overflow:visible}.timeline-card.vertical:before{content:"";border:1px solid var(--card-mark);pointer-events:none;border-radius:12px;position:absolute;inset:8px}.timeline-card.vertical:after{content:"";background:var(--card-mark);pointer-events:none;border-radius:50%;width:36px;height:36px;position:absolute;top:12px;right:14px}.timeline-card.card-month-1{--card-bg:radial-gradient(circle at 88% 14%, #d6eefff2, transparent 24%), linear-gradient(135deg, #ffffffe6, #dbeeffc2);--card-border:#a8d2f2bf;--card-glow:0 12px 30px #87bce73d;--card-mark:#76b5e833}.timeline-card.card-month-2{--card-bg:radial-gradient(circle at 12% 18%, #ffb8d873, transparent 28%), linear-gradient(135deg, #fff7fceb, #ffd6eac2);--card-border:#ff89bfb8;--card-glow:0 12px 30px #ff67a138;--card-mark:#ff67a12e}.timeline-card.card-month-3{--card-bg:radial-gradient(circle at 84% 18%, #bff0cc94, transparent 28%), linear-gradient(135deg, #ffffffe6, #e0fae4bd);--card-border:#8cd8a3b8;--card-glow:0 12px 30px #60ae7a38;--card-mark:#64c2842e}.timeline-card.card-month-4{--card-bg:radial-gradient(circle at 14% 20%, #ffeb967a, transparent 30%), linear-gradient(135deg, #fffdedeb, #ffe9b3b8);--card-border:#f6c654bd;--card-glow:0 12px 30px #deae4033;--card-mark:#e8b22a2e}.timeline-card.card-month-5{--card-bg:radial-gradient(circle at 84% 18%, #ff9ab470, transparent 28%), linear-gradient(135deg, #fff9f5eb, #ffcdc2b8);--card-border:#ff92a0b8;--card-glow:0 12px 30px #f17a8b3d;--card-mark:#f469842e}.timeline-card.card-month-6{--card-bg:radial-gradient(circle at 16% 18%, #97e3ff73, transparent 30%), linear-gradient(135deg, #f6fdffeb, #c1efffb8);--card-border:#57c5ebad;--card-glow:0 12px 30px #3fb2dc38;--card-mark:#39b5e02e}.timeline-card.card-month-7{--card-bg:radial-gradient(circle at 84% 22%, #ffcc5b80, transparent 26%), linear-gradient(135deg, #fffceee6, #ffda80bd);--card-border:#ffb33ebd;--card-glow:0 12px 30px #e7962333;--card-mark:#e9911e2e}.timeline-card.card-month-8{--card-bg:radial-gradient(circle at 18% 20%, #bd9dff6e, transparent 30%), linear-gradient(135deg, #fdf8ffe6, #e5d1ffb8);--card-border:#bb91ffb3;--card-glow:0 12px 30px #9268e238;--card-mark:#9365e22e}.timeline-card.card-month-9{--card-bg:radial-gradient(circle at 82% 16%, #ffab6070, transparent 29%), linear-gradient(135deg, #fffbf4eb, #ffd6a4b8);--card-border:#e09448b3;--card-glow:0 12px 30px #c06f3338;--card-mark:#c572362e}.timeline-card.card-month-10{--card-bg:radial-gradient(circle at 18% 20%, #c48eff5c, transparent 30%), linear-gradient(135deg, #fff7fde6, #eed0ffb3);--card-border:#b57ce8b3;--card-glow:0 12px 30px #8252b438;--card-mark:#8650b82e}.timeline-card.card-month-11{--card-bg:radial-gradient(circle at 86% 18%, #ffc37e61, transparent 30%), linear-gradient(135deg, #fff9f4e6, #ffdcbdb8);--card-border:#d68e5bad;--card-glow:0 12px 30px #aa5e3733;--card-mark:#ae60352e}.timeline-card.card-month-12{--card-bg:radial-gradient(circle at 14% 18%, #bfedff75, transparent 28%), linear-gradient(135deg, #faffffeb, #d7f6f6bd);--card-border:#80d0d5b8;--card-glow:0 12px 30px #4facb138;--card-mark:#4facb12e}.timeline-dot{background:var(--accent);border-radius:50%;width:14px;height:14px;position:absolute;top:22px;box-shadow:0 0 12px #ff8ac799}.timeline-line{background:linear-gradient(180deg, var(--timeline-line), #fff0);width:2px;position:absolute;top:36px;bottom:-18px}.timeline-card.side-left{padding-left:calc(var(--timeline-pad) + var(--timeline-gutter));text-align:left;justify-self:start;padding-right:clamp(10px,3.4vw,18px)}.timeline-card.side-right{padding-right:calc(var(--timeline-pad) + var(--timeline-gutter));text-align:right;justify-self:end;padding-left:clamp(10px,3.4vw,18px)}.timeline-card.side-left .timeline-dot{left:clamp(14px,7vw,22px)}.timeline-card.side-left .timeline-line{left:clamp(20px,9vw,28px)}.timeline-card.side-right .timeline-dot{right:clamp(14px,7vw,22px)}.timeline-card.side-right .timeline-line{right:clamp(20px,9vw,28px)}.timeline-month{background:var(--panel);border:1px solid var(--border);color:var(--accent);letter-spacing:.02em;box-shadow:var(--shadow);z-index:2;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:999px;justify-content:center;align-items:center;width:fit-content;margin:0 auto;padding:4px 12px;font-size:clamp(16px,3vw,20px);font-weight:700;line-height:1.15;display:inline-flex;position:relative}.timeline-meta{gap:2px;display:grid}.event-date{color:var(--subtext);letter-spacing:.01em;margin:0;font-size:clamp(12px,2.2vw,14px)}.event-name{color:var(--accent);margin:0;font-size:clamp(24px,4.6vw,34px);font-weight:700;line-height:1.08}.event-desc{color:var(--text);margin:0;font-size:clamp(16px,2.6vw,19px);line-height:1.45}.event-photos-clip{width:100%;padding:8px 0;position:relative;overflow:hidden}.event-photos{scroll-snap-type:x mandatory;scrollbar-width:thin;gap:14px;width:max-content;min-width:100%;padding-bottom:6px;display:flex;overflow:visible}.event-photo-button{cursor:zoom-in;background:0 0;border:0;flex:none;width:min(220px,80vw);padding:0}.event-photo-button img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--border);width:100%;box-shadow:var(--shadow);scroll-snap-align:start;transform-origin:50%;border-radius:12px;transition:transform .22s,box-shadow .22s;display:block}.event-photo-button:hover img,.event-photo-button:focus-visible img{z-index:2;transform:scale(1.06);box-shadow:0 12px 30px #00000040}.event-photo-button:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:14px}.photo-wall{gap:16px;width:min(1100px,100%);margin-top:10px;display:grid}.photo-wall-header{text-align:center;gap:4px;display:grid}.photo-wall-header h2{margin:0}.photo-wall-header p{color:var(--subtext);text-shadow:var(--text-glow);margin:0;font-size:clamp(16px,2.6vw,19px);line-height:1.35}.photo-wall-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense;gap:14px;width:100%;display:grid}.photo-wall-item{border:1px solid var(--border);width:100%;box-shadow:var(--shadow);cursor:zoom-in;background:#ffffffb8;border-radius:14px;padding:0;transition:box-shadow .18s,transform .18s;animation:.42s ease-out both wallReveal;display:block;position:relative;overflow:hidden}.photo-wall-item:nth-child(3n+2){animation-delay:80ms}.photo-wall-item:nth-child(3n){animation-delay:.15s}@keyframes wallReveal{0%{opacity:0;transform:translateY(18px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.photo-wall-item:hover,.photo-wall-item:focus-visible{transform:translateY(-3px);box-shadow:0 16px 34px #ff67a14d}.photo-wall-item:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.photo-wall-item img{object-fit:cover;width:100%;height:100%;min-height:0;display:block}.photo-wall-item-1 img,.photo-wall-item-5 img{aspect-ratio:4/5}.photo-wall-item-1,.photo-wall-item-5{grid-row:span 2}.photo-wall-item-2 img,.photo-wall-item-7 img{aspect-ratio:1}.photo-wall-item-3 img{aspect-ratio:5/4}.photo-wall-item-4 img,.photo-wall-item-6 img{aspect-ratio:3/4}.photo-wall-item-4,.photo-wall-item-6{grid-row:span 2}.photo-wall-item span{color:var(--subtext);text-align:left;overflow-wrap:anywhere;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffb8;border:1px solid #ffffff85;border-radius:10px;padding:6px 8px;font-size:13px;line-height:1.2;position:absolute;bottom:10px;left:10px;right:10px}.photo-modal-backdrop{z-index:1200;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000b3;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.photo-modal{border:1px solid var(--border);background:#ffffffe6;border-radius:18px;place-items:center;max-width:min(1100px,94vw);max-height:88vh;padding:14px;display:grid;position:relative;box-shadow:0 18px 38px #00000059}.photo-modal img{object-fit:contain;max-width:100%;max-height:80vh;box-shadow:var(--shadow);border-radius:12px}.photo-modal-close{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:#fff;cursor:pointer;text-shadow:0 1px 5px #00000080;background:#fff3;border:1px solid #ffffffb8;border-radius:8px;place-items:center;width:34px;height:34px;min-height:34px;padding:0;font-size:22px;font-weight:700;line-height:1;transition:background .16s,transform .16s;display:grid;position:absolute;top:14px;right:14px;box-shadow:0 4px 14px #0000002e}.photo-modal-close:hover{background:#ffffff52;transform:translateY(-1px)scale(1.03)}.event-photos::-webkit-scrollbar{height:6px}.event-photos::-webkit-scrollbar-thumb{background:#ffb6da99;border-radius:999px}.event-photos::-webkit-scrollbar-track{background:#ffe5f299}.admin-panel{border:1px solid var(--border);width:100%;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#ffffffbd;border-radius:14px;gap:12px;padding:18px;display:grid}.admin-accordion{text-align:left;gap:14px;width:min(1240px,100%);display:grid}.admin-accordion-item{border:1px solid var(--border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:14px;overflow:hidden}.admin-accordion-item summary{color:var(--accent);cursor:pointer;-webkit-user-select:none;user-select:none;background-color:#ffffffe0;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;list-style:none;display:flex}.admin-accordion-item summary::-webkit-details-marker{display:none}.admin-accordion-item summary:after{content:"⌄";width:30px;height:30px;color:var(--accent);background:#ffffff85;border:1px solid #ff67a157;border-radius:8px;place-items:center;padding-bottom:12px;line-height:1;transition:transform .15s;display:grid}.admin-accordion-item[open] summary:after{transform:rotate(180deg)}.admin-accordion-item summary span{gap:3px;min-width:0;display:grid}.admin-accordion-item summary strong{font-size:clamp(24px,3.6vw,34px);line-height:1.05}.admin-accordion-item summary small{color:var(--subtext);font-size:13px;line-height:1.3}.events-panel{border:0;border-top:1px solid var(--border);min-width:0;box-shadow:none;border-radius:0}.work-panel{border:1px solid var(--border);width:min(960px,100%);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:left;background:#ffffffe0;border-radius:14px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:16px;display:grid}.work-panel h3{color:var(--accent);margin:0 0 4px;font-size:clamp(24px,3.4vw,32px);line-height:1.08}.work-panel p{color:var(--subtext);margin:0;font-size:14px;line-height:1.35}.work-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.toast{z-index:1400;width:min(420px,100vw - 28px);color:var(--text);text-align:left;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffeb;border:1px solid #ff67a161;border-radius:12px;align-items:center;gap:12px;padding:12px 14px;animation:.18s ease-out toastIn;display:flex;position:fixed;bottom:clamp(14px,4vw,28px);right:clamp(14px,4vw,28px);box-shadow:0 14px 34px #501a3938}.toast-error{background:#fff1f5f2;border-color:#d9536a8c}.toast span{overflow-wrap:anywhere;flex:1;min-width:0;line-height:1.35}.toast button{width:28px;height:28px;color:var(--accent);cursor:pointer;font:inherit;background:#ff9cc92e;border:1px solid #ff67a14d;border-radius:8px;place-items:center;padding:0;line-height:1;display:grid}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.admin-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.admin-header h3{color:var(--accent);margin:0;font-size:clamp(26px,4vw,36px);line-height:1.08}.admin-hint{color:var(--subtext);margin:0;font-size:13px}.admin-form{gap:10px;display:grid}.admin-edit-state{text-align:left;color:var(--accent);justify-content:space-between;align-items:center;gap:12px;font-size:20px;line-height:1.15;display:flex}.admin-form label{text-align:left;color:var(--subtext);gap:4px;font-size:14px;display:grid}.admin-form input,.admin-form button,.love-note-item input,.love-notes-toolbar button,.love-note-item button{font:inherit}.admin-form input,.love-note-item input{border:1px solid var(--border);background:#ffffffd9;border-radius:10px;padding:10px}.dropzone{border:1px dashed var(--border);background:#ffffffbf;border-radius:12px;gap:8px;padding:10px;transition:border-color .16s,background .16s;display:grid}.dropzone-compact{padding:8px}.dropzone-active{border-color:var(--accent);background:#ffb6da1f}.dropzone-text{color:var(--subtext);flex-wrap:wrap;align-items:center;gap:6px;margin:0;font-size:14px;display:flex}.dropzone-hint{color:var(--subtext);margin:0;font-size:12px}.thumb-grid{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;margin-top:8px;display:grid}.thumb-item{border:1px solid var(--border);background:#fffc;border-radius:10px;position:relative;overflow:hidden}.thumb-preview{cursor:zoom-in;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.thumb-preview img{object-fit:cover;aspect-ratio:4/3;width:100%;height:100%;display:block}.thumb-remove{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:#fff;cursor:pointer;text-shadow:0 1px 5px #00000080;background:#fff3;border:1px solid #ffffffb8;border-radius:8px;place-items:center;width:26px;height:26px;padding:0;font-size:20px;font-weight:700;line-height:1;transition:background .14s,transform .14s;display:grid;position:absolute;top:6px;right:6px;box-shadow:0 4px 14px #0000002e}.thumb-remove:hover{background:#ffffff52;transform:translateY(-1px)scale(1.03)}.thumb-clear{color:var(--accent);cursor:pointer;background:0 0;border:none;grid-column:1/-1;justify-self:start;padding:4px 0;font-size:14px}.link-button{color:var(--accent);cursor:pointer;font:inherit;background:#ffffff73;border:1px solid #ff67a152;border-radius:10px;padding:8px 12px;text-decoration:none}.admin-form button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:10px 14px}.admin-form button,.admin-event-item button,.love-notes-toolbar button,.love-note-item button,.link-button,.memory-mode-close,.photo-modal-close,.thumb-remove{overflow-wrap:anywhere;text-align:center;touch-action:manipulation;border-radius:10px;justify-content:center;align-items:center;min-height:38px;padding:8px 12px;font-size:14px;font-weight:700;line-height:1.1;transition:background .15s,border-color .15s,box-shadow .15s,color .15s,opacity .15s,transform .15s;display:inline-flex}.admin-form button:hover,.admin-event-item button:hover,.love-notes-toolbar button:hover,.love-note-item button:hover,.link-button:hover,.memory-mode-close:hover,.photo-modal-close:hover,.thumb-remove:hover{transform:translateY(-1px);box-shadow:0 8px 18px #ff67a13d}.admin-form button:active,.admin-event-item button:active,.love-notes-toolbar button:active,.love-note-item button:active,.link-button:active,.memory-mode-close:active,.photo-modal-close:active,.thumb-remove:active{transform:translateY(0)scale(.97)}.admin-form button:focus-visible,.admin-event-item button:focus-visible,.love-notes-toolbar button:focus-visible,.love-note-item button:focus-visible,.link-button:focus-visible,.memory-mode-close:focus-visible,.photo-modal-close:focus-visible,.thumb-remove:focus-visible{outline-offset:3px;outline:2px solid #ff67a1b8}.admin-form button:disabled,.admin-event-item button:disabled,.love-notes-toolbar button:disabled,.love-note-item button:disabled,.link-button:disabled{cursor:not-allowed;opacity:.58;box-shadow:none;transform:none}.admin-status{color:var(--accent);margin:0;font-size:14px}.admin-event-thumbs{flex-wrap:wrap;gap:6px;display:flex}.admin-thumb-preview{cursor:zoom-in;background:0 0;border:0;width:72px;padding:0}.admin-thumb-preview img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--border);background:#fffc;border-radius:8px;width:72px}.admin-list ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.admin-event-item{border:1px solid var(--border);text-align:left;background:#ffffff8a;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;justify-content:space-between;align-items:start;gap:12px;padding:10px;display:grid}.admin-event-active{border-color:var(--accent);box-shadow:0 0 0 2px #ff67a129}.admin-event-summary{gap:5px;min-width:0;display:grid}.admin-event-summary strong{color:var(--accent);font-size:clamp(20px,3.2vw,26px);line-height:1.1}.admin-event-meta{color:var(--subtext);font-size:12px}.admin-event-description{color:var(--text);overflow-wrap:anywhere;margin:0;font-size:15px;line-height:1.4}.love-notes-panel{border:0;border-top:1px solid var(--border);box-shadow:none;border-radius:0;gap:14px}.love-notes-toolbar{flex-wrap:wrap;gap:10px;display:flex}.love-notes-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.love-note-item{border:1px solid var(--border);background:#ffffff8a;border-radius:10px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;padding:10px;display:grid}.love-note-index{width:30px;height:30px;color:var(--accent);text-shadow:none;background:#ff67a124;border-radius:999px;place-items:center;font-weight:800;display:grid}.love-note-item input{grid-column:2;width:100%}.love-note-item .button-danger{border-radius:8px;grid-column:2;justify-self:start;padding:8px 12px}.admin-event-thumbs span{aspect-ratio:4/3;border:1px solid var(--border);width:48px;color:var(--subtext);background:#fffc;border-radius:8px;place-items:center;font-size:12px;display:inline-grid}.admin-event-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.admin-event-item button{cursor:pointer;background:#ffd6eab8;border:1px solid #ff67a15c;border-radius:8px;padding:8px 12px}.admin-event-item .admin-thumb-preview{background:0 0;border:0;min-height:0;padding:0}button.button-save{color:#fff;background:#ff67a1e6;border-color:#ff67a194}button.button-edit,.link-button.button-import{color:#8b2d66;background:#ff9cc957;border-color:#ff67a194}.link-button.button-download{color:#b92f78;background:#ff9cc92e;border-color:#ff67a173}button.button-cancel{color:#8b2d66;background:#ffffff61;border-color:#ff67a157}button.button-danger{color:#fff;background:linear-gradient(135deg,#ff7a8a,#d9536a);border-color:#ffffff6b}.admin-form .thumb-remove,.admin-event-item .thumb-remove{background:#fff3;border:1px solid #ffffffb8;border-radius:8px;place-items:center;width:26px;height:26px;min-height:26px;padding:0;display:grid}.admin-inline-form{grid-column:1/-1;gap:10px;display:grid}.admin-inline-fields{grid-template-columns:minmax(0,1fr) minmax(150px,220px);gap:10px;display:grid}.admin-inline-form label{color:var(--subtext);gap:4px;font-size:14px;display:grid}.admin-inline-form input{border:1px solid var(--border);width:100%;font:inherit;background:#ffffffd9;border-radius:10px;padding:10px}.timeline-note{color:var(--subtext);margin:0 0 8px;font-size:14px}@media (width<=680px){.memory-widget{top:10px;left:134px}.memory-popover{width:min(230px,100vw - 20px)}.memory-preview{padding:8px 9px}.memory-preview strong{font-size:13px}.memory-mode-button{padding:9px 10px;font-size:13px;top:10px;left:10px}.loading-name-block span{font-size:clamp(28px,9vw,52px)}.memory-intro-stack{width:min(58vw,230px)}.memory-intro-stack img{border-width:6px 6px 24px;border-radius:10px}.memory-mode{gap:8px;padding:16px 8px}.memory-mode-stage{grid-template-columns:minmax(96px,.66fr) minmax(0,1fr);grid-template-areas:"pile focus""side side";gap:18px;width:min(94vw,520px)}.memory-mode-pile{gap:22px}.memory-mode-deck{width:min(34vw,150px)}.memory-mode-count{margin-top:4px;padding:7px 10px;font-size:12px}.memory-mode-current{border-width:6px 6px 28px;width:min(56vw,300px)}.memory-mode-current img{max-height:calc(70vh - 36px)}.memory-mode-side{align-content:start;justify-items:stretch}.memory-mode-info{padding:8px 9px}.story-progress{scrollbar-width:none;gap:7px;max-height:62vh;padding:11px 5px;left:8px;overflow:auto}.story-progress::-webkit-scrollbar{display:none}.story-progress-step{width:24px;min-width:24px;min-height:15px}.story-progress-step.step-event span:first-child{font-size:8px}.story-progress-step.step-month span:first-child{font-size:14px}.story-progress-step.step-year span:first-child{font-size:20px}.story-progress-label{display:none}.photo-wall-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.photo-wall-item{border-radius:10px}.photo-wall-item span{border-radius:7px;padding:4px 5px;font-size:10px;bottom:5px;left:5px;right:5px}.work-panel{grid-template-columns:1fr}.work-actions{justify-content:stretch}.work-actions .link-button{flex:140px}.admin-event-item,.admin-inline-fields{grid-template-columns:1fr}.admin-event-actions{justify-content:flex-start}.love-note-item{grid-template-columns:auto minmax(0,1fr)}.love-note-item .button-danger{grid-column:2;justify-self:start}}@media (prefers-reduced-motion:reduce){.photo-wall-item{animation:none}.memory-mode-button,.photo-wall-item,.memory-preview,.memory-bell,.story-progress,.story-progress-step span:first-child,.story-progress-label{transition:none}}
