:root{--background:#f7f7f5;--foreground:#222;--muted:#666;--accent:#ff5a00;--card:#fff;--border:#e4e4e4;--success:#1e8e3e;--error:#b3261e}*{box-sizing:border-box}html{background:var(--background)}body{background:var(--background);min-height:100vh;color:var(--foreground);margin:0;font-family:Arial,Helvetica,sans-serif}a{color:inherit}button,input,textarea{font:inherit}.page{place-items:center;min-height:100vh;padding:24px;display:grid}.card{border:1px solid var(--border);background:var(--card);text-align:center;border-radius:16px;width:min(100%,480px);padding:40px 32px;box-shadow:0 12px 32px #0000000f}.landing-card,.auth-card,.shell-card{flex-direction:column;align-items:center;gap:16px;display:flex}.eyebrow{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.8rem;font-weight:700}.brand{color:var(--accent);letter-spacing:-.04em;margin:0;font-size:clamp(2rem,8vw,3rem);font-weight:700}.message{color:var(--muted);margin:0;font-size:1rem;line-height:1.6}.button{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;min-height:48px;padding:0 20px;font-weight:700;text-decoration:none;transition:background-color .16s,border-color .16s,opacity .16s;display:inline-flex}.button:focus-visible,.text-input:focus-visible{outline-offset:2px;outline:3px solid #ff5a004d}.button:disabled{cursor:not-allowed;opacity:.6}.button--primary{background:var(--accent);color:#fff;width:100%}.button--primary:hover:not(:disabled){background:#d94d00}.button--secondary{border-color:var(--border);color:var(--foreground);background:#fff}.button--secondary:hover:not(:disabled){border-color:var(--foreground)}.auth-form{text-align:left;flex-direction:column;gap:16px;width:100%;display:flex}.field{flex-direction:column;gap:8px;display:flex}.field-label{font-size:.875rem;font-weight:700}.text-input{border:1px solid var(--border);width:100%;min-height:48px;color:var(--foreground);background:#fff;border-radius:8px;padding:0 14px}.text-input:disabled{background:#f1f1ef}.notice{text-align:left;border-radius:8px;width:100%;margin:0;padding:12px 14px;font-size:.9rem;line-height:1.5}.notice--success{color:var(--success);background:#edf7ef}.notice--error{color:var(--error);background:#fff1f0}.privacy-note{color:var(--muted);margin:0;font-size:.8rem;line-height:1.5}.shell-actions{width:100%;margin-top:8px}.shell-actions form{width:100%}.app-shell{min-height:100vh}.app-header{border-bottom:1px solid var(--border);background:#ffffffeb}.app-header__inner{justify-content:space-between;align-items:center;gap:16px;width:min(100%,760px);min-height:68px;margin:0 auto;padding:12px 20px;display:flex}.app-header__brand{color:var(--accent);letter-spacing:-.04em;font-size:1.25rem;font-weight:700;text-decoration:none}.app-header__actions{align-items:center;gap:12px;display:flex}.app-header__actions form{margin:0}.app-header__today,.app-header__timeline,.app-header__years,.app-header__settings,.app-header__logout{min-height:44px;color:var(--muted);border-radius:8px;padding:8px 12px;font-size:.875rem;font-weight:700}.app-header__today,.app-header__timeline,.app-header__years,.app-header__settings{align-items:center;text-decoration:none;display:inline-flex}.app-header__today:hover,.app-header__timeline:hover,.app-header__years:hover,.app-header__settings:hover,.app-header__today:focus-visible,.app-header__timeline:focus-visible,.app-header__years:focus-visible,.app-header__settings:focus-visible{color:var(--foreground);background:#f1f1ef}.app-header__logout{border:1px solid var(--border);cursor:pointer;background:#fff}.app-header__logout:hover,.app-header__logout:focus-visible{border-color:var(--foreground);color:var(--foreground)}.app-header__brand:focus-visible,.app-header__today:focus-visible,.app-header__timeline:focus-visible,.app-header__years:focus-visible,.app-header__settings:focus-visible,.page-nav a:focus-visible{outline-offset:3px;outline:3px solid #ff5a004d}.app-main{min-height:calc(100vh - 68px);padding:32px 20px 56px}.app-content{width:min(100%,680px);margin:0 auto}.page-heading{margin:0 0 28px}.page-heading--compact{margin-bottom:20px}.page-title{color:var(--foreground);letter-spacing:-.04em;margin:4px 0 0;font-size:clamp(2rem,8vw,3rem);line-height:1.1}.page-date{color:var(--muted);text-transform:capitalize;margin:8px 0 0;font-size:1rem}.page-nav{margin:0 0 20px}.page-nav a{min-height:44px;color:var(--muted);align-items:center;font-weight:700;text-decoration:none;display:inline-flex}.page-nav a:hover{color:var(--foreground)}.entry-card{border:1px solid var(--border);background:var(--card);border-radius:16px;flex-direction:column;gap:18px;padding:clamp(22px,5vw,36px);display:flex;box-shadow:0 12px 32px #0000000d}.entry-card--empty{background:#fffaf0;border-color:#eadfc2;align-items:flex-start}.entry-card--loading{justify-content:center;min-height:220px}.entry-card__mark{width:44px;height:44px;color:var(--accent);background:#fff0d2;border-radius:50%;place-items:center;font-size:1.5rem;display:grid}.entry-card__header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.entry-card__eyebrow{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:0 0 4px;font-size:.8rem;font-weight:700}.entry-card__title{margin:0;font-size:clamp(1.25rem,5vw,1.7rem);line-height:1.2}.entry-card__status{color:var(--success);background:#edf7ef;border-radius:999px;flex:none;padding:6px 10px;font-size:.75rem;font-weight:700}.entry-card__actions,.entry-form__actions{flex-wrap:wrap;gap:12px;display:flex}.entry-card__actions .button,.entry-form__actions .button{flex:160px}.entry-body{color:var(--foreground);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:1.05rem;line-height:1.75}.entry-body--preview{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.entry-detail__header{border-bottom:1px solid var(--border);padding-bottom:18px}.entry-detail__photo,.photo-preview{margin:0}.entry-detail__image,.photo-preview__image{object-fit:contain;background:#eeeeec;border-radius:12px;width:100%;max-height:520px;display:block}.photo-preview{flex-direction:column;gap:8px;display:flex}.photo-preview__image{max-height:280px}.field-label__optional{color:var(--muted);font-weight:400}.photo-input{height:auto;padding:12px}.timeline-loading{justify-content:center;min-height:280px}.timeline{flex-direction:column;gap:16px;margin:0;padding:0 0 4px 22px;list-style:none;display:flex;position:relative}.timeline:before{content:"";background:#f0c3a9;width:2px;position:absolute;top:12px;bottom:12px;left:8px}.timeline__item{min-width:0;position:relative}.timeline__marker{z-index:1;border:3px solid var(--background);background:var(--accent);border-radius:50%;width:12px;height:12px;position:absolute;top:22px;left:-18px;box-shadow:0 0 0 2px #f0c3a9}.timeline-card{border:1px solid var(--border);background:var(--card);border-radius:14px;flex-direction:column;min-width:0;text-decoration:none;transition:border-color .16s,box-shadow .16s,transform .16s;display:flex;overflow:hidden;box-shadow:0 8px 20px #0000000a}.timeline-card:hover{border-color:#d6bba9;transform:translateY(-1px);box-shadow:0 12px 24px #00000014}.timeline-card:focus-visible{outline-offset:3px;outline:3px solid #ff5a004d}.timeline-card__image{aspect-ratio:16/7;object-fit:cover;background:#eeeeec;width:100%;max-height:240px;display:block}.timeline-card__content{flex-direction:column;gap:8px;min-width:0;padding:18px 20px;display:flex}.timeline-card__date{color:var(--accent);text-transform:capitalize;font-size:.875rem;font-weight:700}.timeline-card__body{color:var(--foreground);overflow-wrap:anywhere;-webkit-line-clamp:4;-webkit-box-orient:vertical;font-size:1rem;line-height:1.6;display:-webkit-box;overflow:hidden}.timeline__older-actions{flex-direction:column;gap:12px;margin:12px 0 0 22px;display:flex}.timeline__older-actions .button{width:100%}.anniversaries-form{gap:20px;margin-bottom:20px}.anniversaries-form__fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.anniversaries-form>.button{width:100%}.entry-form{gap:24px}.field-label-row{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.field-counter{color:var(--muted);white-space:nowrap;font-size:.75rem}.text-area{resize:vertical;border:1px solid var(--border);width:100%;min-height:240px;color:var(--foreground);background:#fff;border-radius:10px;padding:14px;line-height:1.6}.text-area::placeholder{color:#8b8b8b}.text-area[aria-invalid=true],.text-input[aria-invalid=true]{border-color:var(--error)}.field-help,.field-error{margin:0;font-size:.8rem;line-height:1.5}.field-help{color:var(--muted)}.field-error{color:var(--error);font-weight:700}.skeleton{background:linear-gradient(90deg,#eeeeec,#f8f8f6,#eeeeec) 0 0/200% 100%;border-radius:999px;height:14px;display:block}.skeleton--title{width:55%;height:28px}.skeleton--line{width:100%}.skeleton--line-short{width:65%}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.4s ease-in-out infinite shimmer}.timeline-card{transition:border-color .16s,box-shadow .16s,transform .16s}}@media (prefers-reduced-motion:reduce){.timeline-card{transition:none}}@media (max-width:520px){.app-header__inner{flex-wrap:wrap;padding-left:16px;padding-right:16px}.app-header__actions{flex:100%;justify-content:flex-end;gap:4px}.app-header__today{display:none}.app-header__logout{padding-left:8px;padding-right:8px}.app-main{padding:24px 16px 40px}.entry-card__header{flex-direction:column}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:no-preference){.card{animation:.24s ease-out appear}}@media (max-width:480px){.page{padding:16px}.card{padding:32px 20px}}@keyframes appear{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
