:root{--color-bg:#faf9f7;--color-surface:#fff;--color-border:#e4e1db;--color-text:#1f1d1a;--color-text-muted:#6b6660;--color-primary:#3a5a40;--color-primary-dark:#2c4530;--color-danger:#b3413c;--radius:10px;--shadow:0 1px 3px #00000014;--max-width:720px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--color-bg:#17161a;--color-surface:#211f24;--color-border:#34323a;--color-text:#f1efec;--color-text-muted:#a6a2ab;--color-primary:#7fbf8b;--color-primary-dark:#97cfa1;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}#root{flex-direction:column;min-height:100vh;display:flex}a{color:var(--color-primary-dark)}button,input,textarea,select{font-family:inherit;font-size:16px}button{cursor:pointer}.btn{border-radius:var(--radius);background:var(--color-primary);color:#fff;border:1px solid #0000;justify-content:center;align-items:center;gap:.4rem;min-height:44px;padding:.65rem 1.1rem;font-weight:600;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{border-color:var(--color-border);color:var(--color-text);background:0 0}.btn-danger{background:var(--color-danger)}.btn-block{width:100%}.btn-sm{min-height:30px;padding:.2rem .7rem;font-size:.8rem}.field{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.field label{color:var(--color-text-muted);font-size:.85rem;font-weight:600}.field input,.field textarea,.field select{border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);min-height:44px;padding:.65rem .75rem}.field textarea{resize:vertical;min-height:100px}.page{width:100%;max-width:var(--max-width);flex:1;margin:0 auto;padding:1rem}@media (width>=600px){.page{padding:1.5rem}}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;justify-content:space-between;align-items:center;padding:.85rem 1rem;display:flex;position:sticky;top:0}.topbar-title{color:var(--color-text);font-size:1.1rem;font-weight:700;text-decoration:none}.topbar-actions{align-items:center;gap:.6rem;display:flex}.avatar{object-fit:cover;background:var(--color-border);border-radius:50%;width:32px;height:32px}.avatar-btn{background:0 0;border:none;border-radius:50%;min-height:auto;padding:0;line-height:0}.avatar-fallback{color:var(--color-text-muted);justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.dropdown-menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);z-index:20;min-width:180px;position:absolute;top:calc(100% + .5rem);right:0;overflow:hidden;box-shadow:0 4px 16px #00000026}.dropdown-item{text-align:left;width:100%;color:var(--color-text);background:0 0;border:none;min-height:44px;padding:.7rem 1rem;font-size:.9rem;display:block}.dropdown-item:hover{background:var(--color-bg)}.dropdown-item+.dropdown-item{border-top:1px solid var(--color-border)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.card+.card{margin-top:.85rem}.timeline-list{flex-direction:column;gap:.75rem;display:flex}.timeline-list-item{color:inherit;text-decoration:none;display:block}.timeline-list-item h3{margin:0 0 .25rem}.role-badge{text-transform:uppercase;letter-spacing:.03em;background:var(--color-border);color:var(--color-text-muted);border-radius:999px;padding:.2rem .5rem;font-size:.7rem;font-weight:700;display:inline-block}.role-badge.admin{color:#6b4e16;background:#f1d9a8}.role-badge.write{color:#2c4530;background:#cfe3d3}.role-badge.read{background:var(--color-border)}.memory-date{color:var(--color-text-muted);margin-bottom:.5rem;font-size:.85rem}.memory-body{white-space:pre-wrap;line-height:1.45}.memory-photos{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem;margin-top:.75rem;display:grid}.memory-photos img{aspect-ratio:1;object-fit:cover;cursor:pointer;border-radius:8px;width:100%}.memory-actions{gap:.5rem;margin-top:.75rem;display:flex}.memory-actions .btn{min-height:36px;padding:.4rem .8rem;font-size:.85rem}.empty-state{text-align:center;color:var(--color-text-muted);padding:3rem 1rem}.timeline-track-wrap{width:100%;padding:.5rem 0 2rem;position:relative}.timeline-track-scroller{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:thin;outline:none;width:100%;overflow:auto hidden}.timeline-track{align-items:flex-start;min-width:max-content;padding:8px 1.25rem .5rem;display:flex;position:relative}.timeline-track:before{content:"";background:var(--color-border);height:2px;position:absolute;top:15px;left:0;right:0}.timeline-node{scroll-snap-align:center;width:150px;font:inherit;color:inherit;text-align:center;background:0 0;border:none;flex-direction:column;flex:none;align-items:center;min-height:44px;padding:0 .6rem;display:flex}.timeline-node-dot{background:var(--color-primary);border:3px solid var(--color-bg);width:14px;height:14px;box-shadow:0 0 0 1px var(--color-primary);z-index:1;border-radius:50%}.timeline-node-date{color:var(--color-text-muted);margin:.5rem 0;font-size:.72rem;font-weight:600}.timeline-node-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);flex-direction:column;align-items:center;gap:.35rem;padding:.6rem;transition:transform .15s,box-shadow .15s;display:flex}.timeline-node:hover .timeline-node-card,.timeline-node:focus-visible .timeline-node-card{transform:translateY(-2px);box-shadow:0 4px 12px #0000001f}.timeline-node-card-text-only{justify-content:center;min-height:64px;padding:1rem .6rem}.timeline-node-thumb{aspect-ratio:1;object-fit:cover;background:var(--color-border);border-radius:8px;width:100%}.timeline-node-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.8rem;font-weight:600;display:-webkit-box;overflow:hidden}.timeline-header{text-align:center}.timeline-header-spacer{display:none}.timeline-header h1{font-size:1.5rem}.timeline-header-actions{justify-content:center;gap:.5rem;margin-top:.75rem;display:flex}.timeline-nav{display:none}@media (width>=700px){.timeline-header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.75rem;display:grid}.timeline-header-spacer{display:block}.timeline-header h1{font-size:2rem}.timeline-header-actions{justify-content:flex-end;margin-top:0;padding-right:1.5rem}.timeline-nav{background:linear-gradient(to right, var(--color-bg), transparent);width:2.5rem;color:var(--color-text-muted);z-index:5;border:none;justify-content:center;align-items:center;font-size:1.8rem;display:flex;position:absolute;top:0;bottom:2rem}.timeline-nav-prev{left:0}.timeline-nav-next{background:linear-gradient(to left, var(--color-bg), transparent);right:0}}.page-loading,.page-error{min-height:50vh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.fab{z-index:20;border-radius:50%;width:56px;height:56px;font-size:1.6rem;position:fixed;bottom:1.25rem;right:1.25rem;box-shadow:0 4px 12px #0003}.modal-overlay{z-index:30;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=600px){.modal-overlay{align-items:center}}.modal{background:var(--color-surface);border-radius:var(--radius) var(--radius) 0 0;width:100%;max-width:560px;max-height:92vh;padding:1.25rem;overflow-y:auto}@media (width>=600px){.modal{border-radius:var(--radius)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.modal-header h2{margin:0;font-size:1.15rem}.close-btn{color:var(--color-text-muted);background:0 0;border:none;min-height:auto;font-size:1.4rem;line-height:1}.form-actions{gap:.6rem;margin-top:1.25rem;display:flex}.form-error{color:var(--color-danger);margin:-.5rem 0 1rem;font-size:.85rem}.form-error p{margin:.25rem 0 0}.form-error p:first-child{margin-top:0}.login-hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;min-height:100vh;padding:2rem;display:flex}.login-hero h1{margin:0;font-size:2rem}.login-hero p{color:var(--color-text-muted);max-width:340px}.google-btn{color:#1f1d1a;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;align-items:center;gap:.6rem;min-height:44px;padding:.7rem 1.4rem;font-weight:600;text-decoration:none;display:inline-flex}.login-divider{color:var(--color-text-muted);font-size:.85rem}.login-form{text-align:left;width:100%;max-width:340px}.login-links{flex-direction:column;align-items:center;gap:.5rem;margin-top:1rem;font-size:.9rem;display:flex}.link-btn{color:var(--color-primary-dark);font-size:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.member-row{border-bottom:1px solid var(--color-border);align-items:center;gap:.6rem;padding:.6rem 0;display:flex}.member-row:last-child{border-bottom:none}.member-info{flex:1;min-width:0}.member-info .name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.member-info .email{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.section-title{margin:1.5rem 0 .75rem;font-size:.95rem;font-weight:700}.section-title:first-child{margin-top:0}.icon-btn{color:var(--color-text-muted);background:0 0;border:none;min-height:auto;padding:.3rem}
