:root{--bg:#f6f2ea;--surface:#fdfbf5;--ink:#221f19;--ink-soft:#756c5d;--line:#e4dccb;--accent:#a8492f;--accent-soft:#c3714f;--gold:#a8874e;--shadow:0 24px 60px -30px #32281459;--serif-jp:"Zen Old Mincho", "Hiragino Mincho ProN", serif;--serif-en:"Cormorant Garamond", "Zen Old Mincho", serif;--sans:"Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", sans-serif}:root[data-theme=dark]{--bg:#161513;--surface:#1e1c19;--ink:#efe9dc;--ink-soft:#9d968a;--line:#37332b;--accent:#d38a6a;--accent-soft:#b56e50;--gold:#c2a06a;--shadow:0 24px 60px -30px #000c}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.7;transition:background .35s,color .35s}button{color:inherit;cursor:pointer;background:0 0;border:none;font-family:inherit}.app{max-width:34rem;padding:0 1.4rem calc(3rem + env(safe-area-inset-bottom));flex-direction:column;min-height:100dvh;margin:0 auto;display:flex}.header{justify-content:space-between;align-items:center;padding:1.3rem 0 .4rem;display:flex}.wordmark{text-align:left;flex-direction:column;align-items:flex-start;gap:.1rem;padding:0;display:flex}.wordmark-jp{font-family:var(--serif-jp);letter-spacing:.14em;font-size:1.02rem;font-weight:700}.wordmark-en{font-family:var(--serif-en);letter-spacing:.34em;text-transform:uppercase;color:var(--gold);font-size:.66rem}.icon-btn{width:2.4rem;height:2.4rem;color:var(--ink-soft);border-radius:50%;place-items:center;transition:color .2s,background .2s;display:grid}.icon-btn:hover{color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent)}.hero{text-align:center;padding:2.1rem 0 1.6rem;position:relative}.hero-rule{background:var(--gold);width:2.4rem;height:1px;margin:0 auto 1.15rem}.hero-eyebrow{font-family:var(--serif-en);letter-spacing:.42em;text-transform:uppercase;color:var(--gold);text-indent:.42em;margin-bottom:.5rem;font-size:.78rem}.hero-date{font-family:var(--serif-jp);letter-spacing:.06em;font-size:clamp(2.6rem,11vw,3.4rem);font-weight:600;line-height:1.15}.hero-date .num{font-family:var(--serif-en);vertical-align:-.03em;padding:0 .06em;font-size:1.18em;font-weight:500}.hero-sub{letter-spacing:.28em;text-indent:.28em;color:var(--ink-soft);margin-top:.55rem;font-size:.82rem}.hero-sub .today-dot{color:var(--accent)}.nav-arrow{width:2.7rem;height:2.7rem;color:var(--ink-soft);border-radius:50%;place-items:center;transition:color .2s,background .2s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.nav-arrow:hover{color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent)}.nav-arrow.prev{left:-.5rem}.nav-arrow.next{right:-.5rem}.back-today{letter-spacing:.12em;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:999px;align-items:center;gap:.4rem;margin:.9rem auto 0;padding:.32rem 1.05rem;font-size:.8rem;transition:background .2s;display:inline-flex}.back-today:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.section-label{align-items:baseline;gap:.7rem;margin:1.7rem 0 .4rem;display:flex}.section-label h2{font-family:var(--serif-jp);letter-spacing:.18em;font-size:1.06rem;font-weight:700}.section-label .en{font-family:var(--serif-en);letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-size:.64rem}.section-label .count{font-family:var(--serif-en);color:var(--ink-soft);margin-left:auto;font-size:.86rem}.people{list-style:none}.person-row{border-bottom:1px solid var(--line);text-align:left;grid-template-columns:3.6rem 1fr auto;align-items:center;gap:.9rem;width:100%;padding:.95rem .15rem;transition:background .15s;display:grid}.person-row:hover{background:color-mix(in srgb, var(--ink) 4%, transparent)}.person-year{font-family:var(--serif-en);color:var(--accent);letter-spacing:.03em;text-align:center;font-size:1.12rem;font-weight:600;line-height:1.2}.person-year small{font-family:var(--sans);letter-spacing:.2em;color:var(--ink-soft);font-size:.58rem;font-weight:400;display:block}.person-main{min-width:0}.person-name{font-family:var(--serif-jp);letter-spacing:.04em;font-size:1.08rem;font-weight:700;line-height:1.4;display:block}.person-meta{color:var(--ink-soft);letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;font-size:.76rem;display:block;overflow:hidden}.person-meta .age{color:var(--gold)}.person-chevron{color:var(--line);place-items:center;display:grid}.person-row:hover .person-chevron{color:var(--ink-soft)}.event-card{background:var(--surface);border:1px solid var(--line);border-radius:4px;margin-top:.9rem;padding:1.5rem 1.4rem 1.4rem;position:relative;overflow:hidden}.event-card:before{content:"";background:linear-gradient(var(--accent), var(--gold));width:3px;position:absolute;inset:0 auto 0 0}.event-year{font-family:var(--serif-en);color:var(--accent);font-size:2rem;font-weight:600;line-height:1}.event-year small{font-size:.62rem;font-family:var(--sans);letter-spacing:.25em;color:var(--ink-soft);vertical-align:.35em;margin-left:.6rem}.event-title{font-family:var(--serif-jp);letter-spacing:.05em;margin:.7rem 0 .45rem;font-size:1.12rem;font-weight:700;line-height:1.55}.event-desc{color:var(--ink-soft);font-size:.86rem;line-height:1.9}.footer{text-align:center;letter-spacing:.12em;color:var(--ink-soft);margin-top:auto;padding-top:3rem;font-size:.68rem}.footer .fleuron{font-family:var(--serif-en);color:var(--gold);margin-bottom:.4rem;font-size:.9rem;display:block}.sheet-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;z-index:40;background:#0f0c0873;transition:opacity .28s;position:fixed;inset:0}.sheet-backdrop.open{opacity:1}.sheet{background:var(--surface);width:min(100%,34rem);padding:1.1rem 1.7rem calc(2.2rem + env(safe-area-inset-bottom));box-shadow:var(--shadow);z-index:50;border-radius:18px 18px 0 0;transition:transform .34s cubic-bezier(.32,.72,.25,1);position:fixed;bottom:0;left:50%;transform:translate(-50%,105%)}.sheet.open{transform:translate(-50%)}.sheet-handle{background:var(--line);border-radius:2px;width:2.4rem;height:3px;margin:0 auto 1.3rem}.sheet-years{font-family:var(--serif-en);color:var(--accent);letter-spacing:.08em;font-size:1rem}.sheet-name{font-family:var(--serif-jp);letter-spacing:.05em;margin:.15rem 0 .2rem;font-size:1.55rem;font-weight:700;line-height:1.4}.sheet-job{letter-spacing:.14em;color:var(--gold);font-size:.8rem}.sheet-divider{background:var(--line);height:1px;margin:1.1rem 0}.sheet-note{color:var(--ink);font-size:.92rem;line-height:2}.sheet-age{color:var(--ink-soft);letter-spacing:.08em;margin-top:1rem;font-size:.78rem}.sheet-link{letter-spacing:.1em;color:var(--accent);border-bottom:1px solid color-mix(in srgb, var(--accent) 40%, transparent);align-items:center;gap:.35rem;margin-top:1.15rem;padding-bottom:.1rem;font-size:.78rem;text-decoration:none;display:inline-flex}.header-actions{gap:.15rem;display:flex}.event-card.news:before{background:var(--gold)}.event-card.news .event-year{color:var(--gold)}.sheet-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.sheet-head-text{min-width:0}.sheet-photo{border:1px solid var(--line);background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:50%;flex:none;place-items:center;width:5.4rem;height:5.4rem;margin-top:.2rem;display:grid;overflow:hidden}.sheet-photo img{object-fit:cover;width:100%;height:100%;display:block}.sheet-photo-initial{font-family:var(--serif-jp);color:var(--gold);font-size:1.9rem;font-weight:600}.sheet-photo.shimmer{animation:1.2s ease-in-out infinite alternate shimmer}@keyframes shimmer{0%{opacity:.45}to{opacity:1}}.cal-modal{background:var(--surface);border:1px solid var(--line);width:min(92vw,24rem);max-height:84dvh;box-shadow:var(--shadow);z-index:60;border-radius:14px;padding:1.5rem 1.4rem 1.2rem;animation:.25s both calIn;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}@keyframes calIn{0%{opacity:0;transform:translate(-50%,-48%)}to{opacity:1;transform:translate(-50%,-50%)}}.cal-title{font-family:var(--serif-jp);letter-spacing:.14em;text-align:center;margin-bottom:1.1rem;font-size:1rem;font-weight:700}.cal-grid{gap:.45rem;display:grid}.cal-grid.months{grid-template-columns:repeat(3,1fr)}.cal-grid.days{grid-template-columns:repeat(7,1fr)}.cal-cell{border:1px solid var(--line);text-align:center;border-radius:8px;padding:.5rem .2rem;font-size:.9rem;transition:background .15s,border-color .15s}.cal-cell:hover{background:color-mix(in srgb, var(--accent) 8%, transparent);border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.cal-cell.month{flex-direction:column;gap:.1rem;padding:.6rem .2rem;display:flex}.cal-month-num{font-family:var(--serif-jp);font-size:.98rem;font-weight:700}.cal-month-en{font-family:var(--serif-en);letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-size:.6rem}.cal-cell.day{font-family:var(--serif-en);padding:.42rem 0;font-size:1rem}.cal-cell.day.current{background:var(--accent);border-color:var(--accent);color:#fdfbf5}.cal-footer{justify-content:center;gap:.7rem;margin-top:1.1rem;display:flex}.cal-action{letter-spacing:.12em;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:.32rem 1.05rem;font-size:.8rem;transition:background .2s,color .2s}.cal-action:hover{background:color-mix(in srgb, var(--ink) 6%, transparent)}.cal-action.accent{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.info-strip{border-top:1px solid color-mix(in srgb, var(--line) 60%, transparent);border-bottom:1px solid color-mix(in srgb, var(--line) 60%, transparent);margin-top:.3rem;padding:.6rem 0 .55rem;display:flex}.info-cell{text-align:center;flex-direction:column;flex:1;gap:.12rem;min-width:0;padding:0 .4rem;display:flex}.info-cell+.info-cell{border-left:1px solid color-mix(in srgb, var(--line) 60%, transparent)}.info-label{letter-spacing:.28em;text-indent:.28em;color:color-mix(in srgb, var(--gold) 80%, transparent);font-size:.54rem}.info-value{font-family:var(--serif-jp);letter-spacing:.05em;color:var(--ink-soft);justify-content:center;align-items:center;gap:.28rem;font-size:.78rem;font-weight:600;display:inline-flex}.info-value.zodiac svg{color:var(--gold)}.info-sub{color:color-mix(in srgb, var(--ink-soft) 70%, transparent);letter-spacing:.03em;white-space:nowrap;text-overflow:ellipsis;font-size:.56rem;overflow:hidden}.folds{border-top:1px solid var(--line);margin-top:1.6rem}.fold-head{border-bottom:1px solid var(--line);text-align:left;align-items:center;gap:.8rem;width:100%;padding:.85rem .15rem;display:flex}.fold-head:hover{background:color-mix(in srgb, var(--ink) 4%, transparent)}.fold-title{font-family:var(--serif-jp);letter-spacing:.12em;white-space:nowrap;font-size:.9rem;font-weight:700}.fold-preview{min-width:0;color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.72rem;overflow:hidden}.fold-chevron{color:var(--ink-soft);place-items:center;transition:transform .25s;display:grid}.fold-head.open .fold-chevron{transform:rotate(90deg)}.folds .event-card{margin:.8rem 0 1rem;animation:.3s both dayIn}.celebrate{background:color-mix(in srgb, var(--gold) 9%, var(--surface));border:1px solid color-mix(in srgb, var(--gold) 45%, transparent);border-radius:10px;align-items:flex-start;gap:.85rem;margin-top:1.4rem;padding:1rem 1.2rem;display:flex}.celebrate-icon{color:var(--gold);margin-top:.15rem}.celebrate-text{font-family:var(--serif-jp);font-size:1rem;line-height:1.7}.celebrate-text strong{color:var(--accent)}.celebrate-sub{letter-spacing:.22em;color:var(--ink-soft);margin-top:.15rem;font-size:.7rem}.feature-card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:10px;align-items:center;gap:.9rem;width:100%;margin-top:.55rem;padding:.7rem .95rem;transition:border-color .2s,background .2s;display:flex}.feature-card:hover{border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.feature-photo{border:1px solid color-mix(in srgb, var(--gold) 55%, transparent);background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:7px;flex:none;place-items:center;width:3.7rem;height:4.4rem;display:grid;overflow:hidden}.feature-photo img{object-fit:cover;width:100%;height:100%;display:block}.feature-initial{font-family:var(--serif-jp);color:var(--gold);font-size:1.4rem;font-weight:600}.feature-text{flex:1;min-width:0}.feature-meta{letter-spacing:.1em;color:var(--gold);font-size:.7rem}.feature-name{font-family:var(--serif-jp);letter-spacing:.04em;margin:.1rem 0 .05rem;font-size:1.15rem;font-weight:700;line-height:1.35}.feature-job{color:var(--ink-soft);letter-spacing:.08em;font-size:.72rem}.feature-meta{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.search-input{border:1px solid var(--line);width:100%;color:var(--ink);background:0 0;border-radius:8px;outline:none;padding:.6rem .85rem;font-family:inherit;font-size:1rem}.search-input:focus{border-color:color-mix(in srgb, var(--accent) 55%, transparent)}.search-results{max-height:50dvh;margin-top:.6rem;list-style:none;overflow-y:auto}.search-row{text-align:left;border-bottom:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:baseline;gap:.7rem;width:100%;padding:.6rem .3rem;display:grid}.search-row:hover{background:color-mix(in srgb, var(--ink) 4%, transparent)}.search-name{font-family:var(--serif-jp);font-size:.98rem;font-weight:700}.search-job{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.7rem;overflow:hidden}.search-date{font-family:var(--serif-en);color:var(--accent);font-size:.9rem}.search-none{text-align:center;color:var(--ink-soft);padding:1.2rem 0;font-size:.85rem}.fam-hint{color:var(--ink-soft);margin-bottom:.9rem;font-size:.76rem;line-height:1.8}.fam-list{margin-bottom:1rem;list-style:none}.fam-row{border-bottom:1px solid var(--line);align-items:center;gap:.5rem;display:flex}.fam-jump{text-align:left;flex:1;justify-content:space-between;align-items:baseline;gap:.7rem;padding:.55rem .2rem;display:flex}.fam-name{font-family:var(--serif-jp);font-size:.95rem;font-weight:700}.fam-date{color:var(--ink-soft);font-size:.75rem}.fam-del{color:var(--ink-soft);border-radius:50%;padding:.4rem}.fam-del:hover{color:var(--accent)}.fam-form{flex-direction:column;gap:.55rem;display:flex}.fam-form-row{gap:.5rem;display:flex}.fam-select,.fam-year{border:1px solid var(--line);color:var(--ink);background:0 0;border-radius:8px;outline:none;flex:1;min-width:0;padding:.5rem .6rem;font-family:inherit;font-size:.92rem}.fam-add{align-self:center;margin-top:.2rem}.fam-add:disabled{opacity:.4;cursor:default}.footer-links{color:var(--line);justify-content:center;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.footer-link{letter-spacing:.12em;color:var(--ink-soft);border-bottom:1px solid #0000;padding:0;font-size:.68rem;text-decoration:none}.footer-link:hover{color:var(--accent);border-bottom-color:color-mix(in srgb, var(--accent) 40%, transparent)}.fb-types{gap:.45rem;margin-bottom:.7rem;display:flex}.fb-type{letter-spacing:.04em;border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap;border-radius:999px;flex:1;padding:.4rem .2rem;font-size:.74rem;transition:all .15s}.fb-type.active{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 55%, transparent);background:color-mix(in srgb, var(--accent) 7%, transparent)}.fb-textarea{border:1px solid var(--line);width:100%;min-height:7.5rem;color:var(--ink);resize:vertical;background:0 0;border-radius:8px;outline:none;padding:.65rem .85rem;font-family:inherit;font-size:.92rem;line-height:1.7}.fb-textarea:focus{border-color:color-mix(in srgb, var(--accent) 55%, transparent)}.fb-error{color:var(--accent);text-align:center;margin-top:.5rem;font-size:.75rem}.fb-done{text-align:center;padding:.6rem 0 .2rem}.fb-done-main{font-family:var(--serif-jp);letter-spacing:.1em;font-size:1.05rem;font-weight:700}.fb-done-sub{color:var(--ink-soft);margin-top:.5rem;font-size:.78rem;line-height:1.8}.share-wrap{text-align:center;margin-top:1.6rem}.share-btn{letter-spacing:.12em;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;align-items:center;gap:.45rem;padding:.4rem 1.2rem;font-size:.8rem;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.share-btn:hover{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent);background:color-mix(in srgb, var(--accent) 6%, transparent)}.day-view{animation:.4s both dayIn}@keyframes dayIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.loading,.empty{text-align:center;color:var(--ink-soft);letter-spacing:.2em;padding:3rem 0;font-size:.85rem}@media (width>=560px){.nav-arrow.prev{left:-1.2rem}.nav-arrow.next{right:-1.2rem}}
