:root{--bg:#f8f5ef;--card:#fff;--ink:#111827;--muted:#4b5563;--line:#e5e0d5;--accent:#1d4ed8;--ok:#15803d;--warn:#b45309;--new:#fef3c7;font-size:20px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f172a;--card:#1e293b;--ink:#f8fafc;--muted:#cbd5e1;--line:#334155;--accent:#93c5fd;--new:#422006}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);margin:0}body{padding:0 16px max(16px,env(safe-area-inset-bottom));font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;line-height:1.4}header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;padding:16px 0 8px}h1{color:var(--muted);margin:0;font-size:1.1rem;font-weight:600}h2{margin:0}.status{color:var(--muted);font-size:.8rem}.status.ok:before{content:"●";color:var(--ok);margin-right:6px}.status.stale{color:var(--warn);font-weight:600}.hero{background:var(--card);border:1px solid var(--line);border-radius:16px;margin:8px 0 16px;padding:20px}.hero h2{font-size:1.7rem;line-height:1.2}.hero .detail{color:var(--muted);margin:10px 0 0;font-size:1.15rem}.progress{margin-top:16px}.progress .bar{background:var(--line);overflow:hidden;border-radius:7px;height:14px}.progress .fill{background:var(--accent);border-radius:7px;height:100%;transition:width 1s linear}.progress .ends{display:flex;color:var(--muted);justify-content:space-between;margin-top:6px;font-size:.85rem}.facts{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.facts .plane{margin:0;font-size:1.05rem}.facts .plane span{display:block;color:var(--muted);margin-top:2px;font-size:.9rem}.facts .note{color:var(--muted);margin:6px 0 0;font-size:.9rem}.facts ul{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0 0;padding:0}.facts li{display:flex;background:var(--bg);border-radius:12px;align-items: flex-start;gap:10px;padding:10px 12px}.facts li .icon{font-size:1.4rem;line-height:1.2}.facts li strong{display:block;font-size:1rem}.facts li span:not(.icon){display:block;color:var(--muted);font-size:.85rem;line-height:1.3}body.screen .facts ul{grid-template-columns:1fr 1fr}body.screen .facts li{padding:8px 10px}body.screen .facts .note{display:none}.love{display:flex;font:inherit;color:#9f1239;cursor:pointer;background:#ffe4e6;border:2px solid #fda4af;border-radius:16px;justify-content:center;align-items: center;gap:10px;width:100%;margin:0 0 16px;padding:16px;font-size:1.25rem;font-weight:700}.love:disabled{opacity:.8}.timeline .photo{display:block;cursor:zoom-in;background:0 0;border:0;width:100%;margin:10px 0 4px;padding:0}.timeline .photo img{display:block;object-fit:cover;background:var(--line);border-radius:12px;width:100%;height:auto;max-height:60vh}.timeline li.small{padding:8px 16px}.timeline li.small p{color:var(--muted);font-size:.95rem}.timeline li.small .icon{font-size:1.1rem}.lightbox{position:fixed;z-index:30;display:flex;cursor:zoom-out;background:#000000eb;justify-content:center;align-items: center;inset:0}.lightbox[hidden]{display:none}.lightbox img{object-fit:contain;max-width:100vw;max-height:100vh}.map{overflow:hidden;border:1px solid var(--line);border-radius:16px;height:42vh;min-height:260px}.plane svg{filter:drop-shadow(0 1px 2px #0006)}.updates h2{margin:24px 0 8px;font-size:1.2rem}.timeline{list-style:none;margin:0;padding:0}.timeline li{display:flex;background:var(--card);border:1px solid var(--line);border-radius:14px;align-items: flex-start;gap:14px;margin-bottom:10px;padding:14px 16px;transition:background 1s}.timeline li.new{background:var(--new)}.timeline .icon{font-size:1.6rem;line-height:1}.timeline li>div{flex:1;min-width:0}.timeline p{margin:0;font-size:1.1rem}.timeline blockquote{color:var(--ink);margin:6px 0 0;font-size:1.05rem;font-style:italic}.timeline time{display:block;color:var(--muted);margin-top:4px;font-size:.85rem}.timeline .empty p{color:var(--muted)}.wake{position:fixed;z-index:10;background:var(--accent);color:#fff;border:0;border-radius:999px;padding:14px 22px;font-size:1.1rem;top:12px;left:50%;transform:translate(-50%)}.gone{text-align:center;max-width:32rem;margin:20vh auto}.gone h1{color:var(--ink);font-size:1.8rem}body.screen{overflow:hidden;height:100vh;padding:0 20px;font-size:24px}body.screen header{padding:12px 0 4px}body.screen main{display:grid;grid-template-columns:1.3fr 1fr;grid-template-rows:auto 1fr;gap:0 20px;height:calc(100vh - 64px)}body.screen #heroes{grid-column:2;grid-row:1}body.screen .love{grid-column:2;grid-row:2;display:none;align-self: start}body.screen .timeline .photo img{max-height:32vh}body.screen .map-link{display:none}body.screen .map{grid-column:1;grid-row:1/span 2;height:100%}body.screen .updates{grid-column:2;grid-row:2;overflow:hidden}body.screen .updates h2{margin-top:0}@media (max-width:800px),(orientation:portrait){body.screen{overflow:auto;height:auto}body.screen main{display:block;height:auto}body.screen .map{height:45vh}}body.familymap{max-width:40rem;margin:0 auto}body.familymap .hint{color:var(--muted);margin:0 0 12px;font-size:.95rem}.map-link{display:block;background:var(--card);border:1px solid var(--line);color:var(--ink);text-decoration:none;border-radius:16px;margin:12px 0;padding:14px 16px;font-weight:600}.map-link span{color:var(--muted);font-weight:400}.timeline p.more{color:var(--ink);opacity:.85;margin-top:6px;font-size:1.02rem}.sound{font:inherit;cursor:pointer;background:var(--card);color:var(--accent);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:600}.sound[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}body.screen .sound{padding:10px 18px;font-size:1rem}.email-me{background:var(--card);border:1px solid var(--line);border-radius:16px;margin:24px 0 8px;padding:16px}.email-me p{margin:0 0 10px;font-size:1.05rem}.email-me p.hint{color:var(--muted);margin:10px 0 0;font-size:.95rem}.email-me form{display:flex;flex-wrap:wrap;gap:8px}.email-me input{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:12px;flex:12rem;min-width:0;padding:12px;font-size:1rem}.email-me button{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:12px;padding:12px 18px;font-weight:600}.email-me button.quiet{color:var(--accent);background:0 0;margin-right:16px;padding:8px 0}.email-me .error{color:var(--warn)}body.screen .email-me{display:none}
