:root{--page-bg: #f0f4f9;--surface: #ffffff;--ink: #1f1f1f;--muted: #5f6368;--accent: #0b57d0;--accent-soft: #d3e3fd;--accent-ink: #041e49;--danger: #b3261e;--line: #e0e3e7;--sidebar-w: 256px;--topbar-h: 64px;--frame-gap: 12px;--radius-frame: 28px;--shadow: 0 1px 2px rgba(60, 64, 67, .12), 0 2px 6px rgba(60, 64, 67, .08);font-family:"Source Sans 3",system-ui,sans-serif;color:var(--ink);background:var(--page-bg);line-height:1.45;font-weight:400;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{overflow:hidden}h1,h2,.brand{font-family:Fraunces,Georgia,serif;font-weight:700;letter-spacing:-.02em}button,input{font:inherit}a{color:inherit;text-decoration:none}.app-shell{height:100%;display:flex;flex-direction:column;background:var(--page-bg);overflow:hidden}.topbar{flex:0 0 var(--topbar-h);height:var(--topbar-h);display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:0 1rem 0 .75rem;z-index:20;background:var(--page-bg)}.topbar-brand{display:flex;align-items:center;gap:.65rem;padding-left:.5rem;min-width:0}.brand-mark{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#34a853,#0b57d0);color:#fff;flex-shrink:0}.brand-mark svg{width:22px;height:22px}.brand{font-size:1.35rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-center{display:flex;align-items:center;gap:.85rem;min-width:0;justify-content:flex-start}.topbar-message{margin:0 0 0 auto;min-width:0;max-width:min(42vw,28rem);font-size:.9rem;font-weight:500;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.topbar-message.is-error{color:var(--danger)}.page-heading{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;font-size:1.35rem;font-weight:500;letter-spacing:-.01em;color:var(--ink)}.selection-heading{display:flex;align-items:center;gap:.35rem;min-width:0}.selection-clear{width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer;flex-shrink:0}.selection-clear:hover{background:#3c404314;color:var(--ink)}.selection-clear svg{width:22px;height:22px}.selection-count{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;font-size:1.35rem;font-weight:500;color:var(--ink);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:.35rem;justify-self:end}.icon-btn{width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer}.icon-btn:hover:not(:disabled){background:#3c404314;color:var(--ink)}.icon-btn:disabled{opacity:.45;cursor:not-allowed}.icon-btn svg{width:22px;height:22px}.avatar-btn{width:36px;height:36px;margin-left:.25rem;border:0;border-radius:50%;background:#7c4dff;color:#fff;font-size:.85rem;font-weight:600;cursor:pointer;display:grid;place-items:center}.avatar-btn:hover{filter:brightness(1.05)}.shell-body{flex:1;min-height:0;display:flex;align-items:stretch;gap:0;padding:0 var(--frame-gap) var(--frame-gap) 0;overflow:hidden}.sidebar{flex:0 0 var(--sidebar-w);width:var(--sidebar-w);display:flex;flex-direction:column;padding:.25rem .75rem .75rem;overflow:auto}.sidebar-nav{display:flex;flex-direction:column;gap:.15rem;flex:1 1 auto}.sidebar-footer{display:flex;flex-direction:column;gap:.15rem;margin-top:auto;padding-top:.75rem}.sidebar-link{display:flex;align-items:center;gap:.85rem;padding:.7rem 1rem .7rem 1.15rem;border-radius:0 999px 999px 0;margin-right:.5rem;border:0;background:transparent;color:var(--ink);font:inherit;font-size:.95rem;font-weight:500;text-align:left;width:calc(100% - .5rem);cursor:pointer;transition:background .12s ease}.sidebar-link svg{width:22px;height:22px;flex-shrink:0;color:var(--muted)}.sidebar-link:hover{background:#3c40430f}.sidebar-link.is-active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.sidebar-link.is-active svg{color:var(--accent)}.content-frame{flex:1 1 auto;min-width:0;min-height:0;background:var(--surface);border-radius:var(--radius-frame);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}.content-scroll{flex:1;min-height:0;overflow:auto;padding:1.25rem 1.5rem 2rem;scrollbar-gutter:stable}.content-status{margin:.5rem 0}.error{color:var(--danger);margin:0}.empty{max-width:28rem;margin:4rem auto;text-align:center;display:grid;gap:.85rem;justify-items:center}.empty h2{margin:0;font-size:1.6rem}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:999px;padding:.65rem 1.25rem;background:var(--accent);color:#fff;font-weight:600;cursor:pointer;transition:filter .16s ease,opacity .16s ease}.btn:hover{filter:brightness(1.06)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.secondary{background:transparent;border-color:var(--line);color:var(--ink)}.btn.danger{background:transparent;border-color:color-mix(in srgb,var(--danger) 45%,transparent);color:var(--danger)}.btn.ghost{background:transparent;color:var(--muted);border:0;padding-inline:.5rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted{color:var(--muted)}.timeline-days{display:grid;gap:1.75rem}.day-section{display:grid;gap:.65rem}.day-header-row{display:flex;align-items:center;gap:0;min-height:2rem;width:fit-content;max-width:100%;cursor:default}.day-header{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;font-size:1.05rem;font-weight:500;letter-spacing:-.01em;color:var(--ink)}.section-check{width:0;height:1.7rem;margin:0;padding:0;border:0;border-radius:50%;background:transparent;color:transparent;display:inline-grid;place-items:center;cursor:pointer;opacity:0;overflow:hidden;pointer-events:none;flex-shrink:0;transition:width .14s ease,margin-right .14s ease,opacity .14s ease,background .12s ease,color .12s ease,border-color .12s ease}.section-check.is-visible{width:1.7rem;margin-right:.55rem;opacity:1;pointer-events:auto;border:2px solid rgba(95,99,104,.55);color:transparent;background:#ffffffeb}.section-check.is-visible:hover{border-color:var(--accent);background:#fff}.section-check.is-checked,.section-check.is-partial{width:1.7rem;margin-right:.55rem;opacity:1;pointer-events:auto;border:2px solid var(--accent);background:var(--accent);color:#fff}.section-check.is-partial{background:color-mix(in srgb,var(--accent) 78%,#fff)}.section-check svg{width:.95rem;height:.95rem;opacity:0}.section-check.is-checked svg,.section-check.is-partial svg{opacity:1}.justified-grid{display:flex;flex-direction:column;gap:6px;width:100%}.justified-row{display:flex;gap:6px;width:100%}.tile{position:relative;flex:0 0 auto;border-radius:2px;overflow:hidden;background:#e8eaed;animation:tile-in .28s ease both}@keyframes tile-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.tile-open{display:block;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer}.tile img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .22s ease}.tile:hover img{transform:scale(1.03)}.tile.is-selected{outline:3px solid var(--accent);outline-offset:-3px}.tile.is-selected img{transform:scale(.92);border-radius:2px}.select-check{position:absolute;top:.45rem;left:.45rem;z-index:2;width:1.55rem;height:1.55rem;border-radius:50%;border:2px solid rgba(255,255,255,.95);background:#20212447;color:transparent;display:grid;place-items:center;opacity:0;pointer-events:none;cursor:pointer;transition:opacity .12s ease,background .12s ease,border-color .12s ease;box-shadow:0 1px 3px #00000040}.select-check svg{width:.85rem;height:.85rem}.tile:hover .select-check,.tile.is-selected .select-check,.tile.selection-mode .select-check{opacity:1;pointer-events:auto}.tile.is-selected .select-check,.select-check.is-checked{background:var(--accent);border-color:var(--accent);color:#fff}.select-check:hover{border-color:#fff;background:#20212473}.tile.is-selected .select-check:hover,.select-check.is-checked:hover{background:color-mix(in srgb,var(--accent) 85%,#000)}.load-more{display:flex;justify-content:center;padding:1.5rem 0 .5rem}.albums-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.25rem 1rem}.album-tile{display:grid;gap:.45rem;min-width:0;color:inherit;text-decoration:none;cursor:pointer}.album-tile-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:0;font:inherit;text-align:left}.album-tile-button:disabled{opacity:.6;cursor:not-allowed}.album-tile:hover .album-cover{filter:brightness(.97)}.album-tile:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:12px}.album-cover{aspect-ratio:1;border-radius:12px;overflow:hidden;background:#e8eaed}.album-cover img{width:100%;height:100%;object-fit:cover;display:block}.album-cover-empty{width:100%;height:100%;background:linear-gradient(145deg,#e8eaed,#d3e3fd)}.album-title{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;font-size:1rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-meta{margin:0;font-size:.88rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:1.25rem;background:#20212473;animation:fade-in .14s ease}.modal-card{width:min(420px,100%);background:var(--surface);border-radius:20px;box-shadow:0 16px 48px #20212447;padding:1.5rem 1.35rem 1.25rem;display:grid;gap:.65rem}.modal-card h2{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;font-size:1.35rem;font-weight:600;letter-spacing:-.01em}.modal-card>.muted{margin:0}.modal-form{display:grid;gap:.55rem;margin-top:.35rem}.modal-form label{font-size:.92rem;color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:.55rem;margin-top:.5rem}.confirm-card{width:min(360px,100%);background:#f1f3f4;border-radius:28px;box-shadow:0 8px 28px #20212447;padding:1.35rem 1.35rem 1rem;display:grid;gap:.55rem}.confirm-card h2{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;font-size:1.2rem;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.confirm-card>.muted{margin:0;font-size:.95rem;line-height:1.4}.confirm-actions{display:flex;justify-content:flex-end;gap:.35rem;margin-top:.85rem}.confirm-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--accent);font:inherit;font-weight:700;font-size:.95rem;padding:.65rem .85rem;border-radius:999px;cursor:pointer}.confirm-btn:hover:not(:disabled){background:#0b57d014}.confirm-btn:disabled{opacity:.55;cursor:not-allowed}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#202124eb;display:grid;grid-template-rows:auto 1fr;animation:fade-in .16s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.lightbox-topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem .85rem;background:#202124e0;color:#e8eaed}.lightbox-topbar-actions{display:flex;align-items:center;gap:.15rem}.lightbox-icon-btn{width:2.5rem;height:2.5rem;border:0;border-radius:50%;background:transparent;color:#e8eaed;display:grid;place-items:center;cursor:pointer;flex-shrink:0}.lightbox-icon-btn:hover:not(:disabled){background:#ffffff1f}.lightbox-icon-btn:disabled{opacity:.45;cursor:not-allowed}.lightbox-icon-btn.lightbox-icon-danger:hover:not(:disabled){background:#b3261e59;color:#fce8e6}.lightbox-icon-btn svg{width:1.35rem;height:1.35rem}.lightbox-chrome{position:relative;min-height:0;display:grid;place-items:center;padding:1rem 4.5rem 1.5rem;align-content:center;gap:.75rem}.lightbox-figure{margin:0;display:grid;justify-items:center;gap:.5rem;max-width:100%}.lightbox-figure img{max-width:min(96vw,1400px);max-height:calc(100vh - 7rem);width:auto;height:auto;object-fit:contain;border-radius:4px;box-shadow:0 16px 48px #00000073}.lightbox-figure figcaption{color:#e8eaed;font-size:.95rem}.lightbox-meta{color:#e8eaedcc;font-size:.9rem}.lightbox-error{margin:0;color:#f9dedc;font-size:.9rem}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:3rem;height:3rem;border:0;border-radius:50%;background:#ffffff1f;color:#fff;font-size:2rem;line-height:1;cursor:pointer;display:grid;place-items:center}.lightbox-nav:hover:not(:disabled){background:#ffffff38}.lightbox-nav:disabled{opacity:.35;cursor:not-allowed}.lightbox-nav.lightbox-prev{left:.75rem}.lightbox-nav.lightbox-next{right:.75rem}.login-page{min-height:100%;display:grid;place-items:center;padding:2rem 1rem;background:radial-gradient(900px 500px at 15% -10%,#d3e3fd 0%,transparent 55%),radial-gradient(700px 400px at 100% 0%,#ceead6 0%,transparent 50%),var(--page-bg);overflow:auto}.login-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:2rem 1.5rem;box-shadow:var(--shadow);display:grid;gap:1rem}.login-card h1{margin:0;font-size:1.75rem}.login-card .brand{font-size:1.25rem}.field{display:grid;gap:.35rem}label{font-size:.92rem;color:var(--muted)}input[type=email],input[type=password],input[type=text]{width:100%;border:1px solid var(--line);border-radius:12px;padding:.75rem .85rem;background:#fff;color:var(--ink)}input[type=email]:focus,input[type=password]:focus,input[type=text]:focus{outline:2px solid color-mix(in srgb,var(--accent) 45%,transparent);border-color:var(--accent)}@media(max-width:840px){:root{--sidebar-w: 72px;--frame-gap: 8px;--radius-frame: 20px}.topbar{grid-template-columns:auto minmax(0,1fr) auto;padding-left:.5rem}.topbar-brand .brand{display:none}.sidebar-link span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.sidebar-link{justify-content:center;padding:.75rem;border-radius:999px;margin-right:0}.sidebar{padding-inline:.4rem}.content-scroll{padding:1rem .85rem 1.5rem}.lightbox-chrome{padding:.75rem 3.25rem 1rem}}@media(max-width:560px){:root{--sidebar-w: 0px;--frame-gap: 0px;--radius-frame: 0px;--topbar-h: 56px}.sidebar{display:none}.shell-body{padding:0}.content-frame{border-radius:0;box-shadow:none}.topbar{grid-template-columns:auto minmax(0,1fr) auto}.page-heading,.selection-count{font-size:1.15rem}body{overflow:auto}.app-shell{min-height:100%;height:auto}.shell-body,.content-frame{min-height:calc(100vh - var(--topbar-h))}.content-scroll{overflow:visible}}
