:root{--bg:#f7f2e9;--card:#fffdf8;--ink:#2c2a26;--muted:#6f685d;--line:#ece3d3;--accent:#2f4b7c;--accent-soft:#eaeef6;--warm:#b4502f;--warm-soft:#f7ebe3;--radius:18px;--maxw:720px}*{box-sizing:border-box}body,html{margin:0;padding:0}html{background:var(--bg)}.bg-layer{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}body{background:transparent;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.62;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.serif,h1,h2,h3{font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,Times New Roman,serif;letter-spacing:.1px}.wrap{max-width:var(--maxw);margin:0 auto;padding:28px 18px 96px;position:relative;z-index:1}.hero{text-align:center;padding:18px 0 8px}.hero .kicker{text-transform:uppercase;letter-spacing:2.5px;font-size:12px;color:var(--accent);font-weight:600}.hero h1{font-size:38px;line-height:1.1;margin:10px 0 6px}.hero .dates{font-size:17px;color:var(--ink);margin:2px 0}.hero .who{font-size:14px;color:var(--muted);margin-top:4px}.rule{height:1px;background:var(--line);border:0;margin:26px 0}.lead{font-size:16px;color:var(--ink)}.lead .em{background:linear-gradient(transparent 62%,var(--warm-soft) 62%)}.spine{list-style:none;margin:16px 0 0;padding:0}.spine li{position:relative;padding:6px 0 6px 26px;font-size:15px}.spine li:before{content:"";position:absolute;left:6px;top:15px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.spine .t{color:var(--accent);font-weight:600}.callouts{margin-top:18px;display:grid;grid-gap:10px;gap:10px}.callout{border-left:3px solid var(--accent);background:var(--accent-soft);padding:10px 14px;border-radius:0 10px 10px 0;font-size:14px}.callout b{color:var(--accent)}h2.section{font-size:13px;text-transform:uppercase;letter-spacing:2px;color:var(--muted);margin:40px 0 14px;font-weight:700}.day{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px;margin:14px 0;box-shadow:0 1px 2px rgba(44,42,38,.03)}.day .top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.chip{font-size:11px;font-weight:700;letter-spacing:.4px;background:var(--accent);color:#fff;padding:3px 9px;border-radius:999px;white-space:nowrap}.chip.warm{background:var(--warm)}.day h3{font-size:22px;margin:8px 0 2px}.day .date{font-size:13px;color:var(--muted)}.day .body{margin-top:10px}.day .body p{margin:9px 0;font-size:15px}.day ul{margin:8px 0;padding-left:20px}.day li{margin:5px 0;font-size:15px}.day .meta{margin-top:12px;display:grid;grid-gap:7px;gap:7px}.tag{font-size:13px;color:var(--muted);border-top:1px dashed var(--line);padding-top:9px}.tag b{color:var(--ink);font-weight:600}.bday{margin-top:12px;font-size:14px;background:var(--warm-soft);border-radius:10px;padding:9px 12px;color:#5a3322}.bday b{color:var(--warm)}.tbl{width:100%;border-collapse:collapse;font-size:14px;margin-top:6px}.tbl td{border-bottom:1px solid var(--line);padding:10px 4px;vertical-align:top}.tbl td:first-child{font-weight:600;width:34%;padding-right:12px}.bullets{padding-left:20px;margin:6px 0}.bullets li{margin:7px 0;font-size:15px}.bullets b{font-weight:600}.note{margin-top:8px}.foot,.note{font-size:13px;color:var(--muted)}.foot{text-align:center;margin-top:48px}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;position:relative;z-index:1}.login-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:32px 26px;max-width:360px;width:100%;text-align:center;box-shadow:0 6px 24px rgba(44,42,38,.06)}.login-card .kicker{text-transform:uppercase;letter-spacing:2.5px;font-size:11px;color:var(--accent);font-weight:600}.login-card h1{font-size:26px;margin:8px 0 4px}.login-card p{font-size:14px;color:var(--muted);margin:4px 0 20px}.login-card input{width:100%;padding:13px 14px;font-size:16px;border:1px solid var(--line);border-radius:12px;background:#fff;margin-bottom:12px;outline:none}.login-card input:focus{border-color:var(--accent)}.login-card button{width:100%;padding:13px 14px;font-size:16px;font-weight:600;background:var(--accent);color:#fff;border:0;border-radius:12px;cursor:pointer}.login-card .err{color:var(--warm);font-size:13px;margin-bottom:10px}.hero-art{display:block;margin:10px auto 4px;max-width:320px;width:78%;height:auto}.places{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}.places a{font-size:12.5px;text-decoration:none;color:var(--accent);background:var(--accent-soft);border:1px solid #dde3f0;padding:5px 11px;border-radius:999px;line-height:1;white-space:nowrap}.places a:active{background:#dfe6f3}.living{margin-top:38px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 18px}.living h3{font-size:19px;margin:0 0 8px}.living p{font-size:14.5px;color:var(--muted);margin:0}.journal{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}.jphotos{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.jphotos a{display:block}.jphotos img{width:88px;height:88px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#f0ebe0}.jnote{font-size:14.5px;color:var(--ink);margin:0 0 10px;white-space:pre-wrap;background:var(--warm-soft);border-radius:10px;padding:10px 12px}.jtoggle{font-size:13px;color:var(--muted);background:none;border:0;padding:2px 0;cursor:pointer}.jtoggle:hover{color:var(--accent)}.jeditor textarea{width:100%;font-size:15px;font-family:inherit;line-height:1.5;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff;resize:vertical;outline:none}.jeditor textarea:focus{border-color:var(--accent)}.jrow{display:flex;align-items:center;gap:10px;margin-top:9px;flex-wrap:wrap}.jsave{color:#fff;background:var(--accent);border:0;border-radius:10px}.jphoto-btn,.jsave{font-size:13px;font-weight:600;padding:8px 14px;cursor:pointer}.jphoto-btn{color:var(--accent);background:var(--accent-soft);border:1px solid #dde3f0;border-radius:10px}.jclose{font-size:13px;color:var(--muted);background:none;border:0;cursor:pointer}.jclose:disabled,.jphoto-btn:has(input:disabled),.jsave:disabled{opacity:.55;cursor:default}.jstatus{font-size:12.5px;color:var(--warm)}