:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fbfaf7;--fg:#23201d;--stage:#e7e2da;--stage-control:#23201d14;--stage-control-fg:#23201d;--photo-panel:380px;--header-h:72px;--muted:#6d665e;--surface:#f2efe9;--accent:#1f6f63;--accent-soft:#1f6f631a;--on-accent:#fff;--danger:#b3341a;--line:#23201d1c;--faint:#c3bdb3;--scrim-page:#fbfaf7e0;--shadow:0 1px 2px #23201d0d, 0 10px 28px #23201d14;--shadow-soft:0 1px 2px #23201d0a, 0 4px 12px #23201d0d;--gap:12px;--font-caption:ui-serif, Georgia, "Times New Roman", serif;--scrim:#000000d1;--scrim-clear:#0000;--on-photo:#fff;--on-photo-muted:#ffffffb8}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--stage:#17181a;--stage-control:#ffffff24;--stage-control-fg:#f4f2ef;--bg:#1b1a18;--fg:#ece8e2;--muted:#9c958c;--surface:#24221f;--accent:#4fb3a3;--accent-soft:#4fb3a324;--on-accent:#12211f;--danger:#e2704f;--line:#ece8e221;--faint:#4e4a45;--scrim-page:#1b1a18e6;--shadow:0 1px 2px #0006, 0 10px 28px #00000080;--shadow-soft:0 1px 2px #00000059, 0 4px 12px #00000059}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--stage:#17181a;--stage-control:#ffffff24;--stage-control-fg:#f4f2ef;--bg:#1b1a18;--fg:#ece8e2;--muted:#9c958c;--surface:#24221f;--accent:#4fb3a3;--accent-soft:#4fb3a324;--on-accent:#12211f;--danger:#e2704f;--line:#ece8e221;--faint:#4e4a45;--scrim-page:#1b1a18e6;--shadow:0 1px 2px #0006, 0 10px 28px #00000080;--shadow-soft:0 1px 2px #00000059, 0 4px 12px #00000059}*{box-sizing:border-box}html{background:var(--bg)}body{color:var(--fg);background:0 0;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.backdrop{z-index:-2;pointer-events:none;position:fixed;inset:0;overflow:hidden}.backdrop-canvas{filter:blur(60px)saturate(.7);width:110%;height:110%;margin:-5% 0 0 -5%;display:block}.backdrop-scrim{background-color:var(--scrim-page);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23g)' opacity='0.05'/%3E%3C/svg%3E");position:absolute;inset:0}a{color:inherit;text-decoration:none}.site-header{justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.site-title{letter-spacing:.02em;align-items:center;gap:9px;font-weight:600;display:flex}.logo-mark{width:auto;height:20px;display:block}.site-nav{align-items:center;gap:4px;display:flex}.nav-icon{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:color .15s ease-out,background-color .15s ease-out;display:inline-flex}.nav-icon:hover{color:var(--fg);background:var(--accent-soft)}.nav-icon:disabled{opacity:.5;cursor:default}.icon-nav{width:20px;height:20px}.user-menu-avatar{border:1px solid var(--line);background:var(--surface);width:28px;height:28px;color:var(--muted);border-radius:50%;flex:none;justify-content:center;align-items:center;margin-left:6px;font-size:13px;font-weight:600;line-height:1;display:inline-flex;overflow:hidden}.user-menu-avatar img{object-fit:cover;width:100%;height:100%;display:block}.user-menu-avatar:hover{border-color:var(--accent);color:var(--fg)}@media (prefers-reduced-motion:reduce){.nav-icon{transition:none}}.theme-toggle{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:4px;transition:color .15s ease-out;display:flex}.theme-toggle:hover{color:var(--fg)}.theme-toggle svg{width:20px;height:20px;display:block}@media (prefers-reduced-motion:reduce){.theme-toggle{transition:none}}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.photo-grid{columns:3 320px;column-gap:var(--gap);padding:0 20px}.photo-card{break-inside:avoid;margin-bottom:var(--gap);display:block;position:relative}.photo-frame{background:var(--surface);position:relative;overflow:hidden}.photo-blur,.photo-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.photo-img{opacity:1;transition:transform .4s ease-out}.photo-card:hover .photo-img,.photo-card:focus-visible .photo-img{transform:scale(1.03)}.photo-card:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.photo-label{background:linear-gradient(to top, var(--scrim), var(--scrim-clear));color:var(--on-photo);opacity:0;pointer-events:none;flex-direction:column;gap:2px;padding:28px 14px 12px;transition:opacity .2s ease-out,transform .2s ease-out;display:flex;position:absolute;inset:auto 0 0;transform:translateY(4px)}.photo-card:hover .photo-label,.photo-card:focus-visible .photo-label{opacity:1;transform:translateY(0)}.photo-caption{font-family:var(--font-caption);font-size:14px;font-style:italic;line-height:1.3}.photo-author{text-transform:uppercase;letter-spacing:.12em;color:var(--on-photo-muted);font-size:11px}.more{color:var(--fg);border:1px solid var(--muted);cursor:pointer;background:0 0;border-radius:999px;margin:24px auto;padding:10px 20px;font-size:14px;transition:border-color .15s ease-out,color .15s ease-out;display:block}.more:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.more:disabled{cursor:default;opacity:.6}.empty,.error{color:var(--muted);font-family:var(--font-caption);padding:40px 20px;font-size:16px;font-style:italic}.error{color:var(--danger)}@media (prefers-reduced-motion:reduce){.photo-img,.photo-label{transition:none}.photo-card:hover .photo-img,.photo-card:focus-visible .photo-img{transform:none}}.photo-page{max-width:1000px;margin:0 auto;padding:0 20px 60px}.photo-stage{background:var(--surface);box-shadow:var(--shadow);position:relative;overflow:hidden}.photo-blur-full,.photo-full{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.photo-blur-full{object-fit:cover}.photo-meta{gap:12px;padding:24px 0 20px;display:grid}.photo-caption{font-family:var(--font-caption);color:var(--fg);margin:0;font-size:1.5rem;font-style:italic;font-weight:400;line-height:1.35}.photo-byline{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:2px;margin:0;font-size:14px;display:flex}.photo-byline a{color:var(--fg);text-transform:uppercase;letter-spacing:.12em;font-size:12px;transition:color .15s ease-out}.photo-byline a:hover{color:var(--accent)}.photo-date{font-family:var(--font-caption);font-style:italic}.photo-counts{color:var(--muted);align-items:center;gap:18px;font-size:14px;display:flex}.photo-tags{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.photo-tags a{color:var(--muted);font-size:13px;transition:color .15s ease-out}.photo-tags a:hover{color:var(--accent)}.photo-nav{border-top:1px solid var(--line);justify-content:space-between;margin-top:8px;padding-top:16px;display:flex}.photo-nav-link{text-transform:uppercase;letter-spacing:.08em;color:var(--fg);font-size:13px;transition:color .15s ease-out}.photo-nav-link:hover{color:var(--accent)}.photo-nav-link.disabled{color:var(--faint);pointer-events:none}.share{color:var(--fg);border:1px solid var(--muted);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:8px 18px;font-size:13px;transition:border-color .15s ease-out,color .15s ease-out}.share:hover{border-color:var(--accent);color:var(--accent)}@media (prefers-reduced-motion:reduce){.photo-byline a,.photo-tags a,.photo-nav-link,.share{transition:none}}.author-header{align-items:center;gap:16px;padding:24px 20px 20px;display:flex}.author-avatar{object-fit:cover;background:var(--surface);border-radius:50%}.author-name{text-transform:uppercase;letter-spacing:.08em;margin:0 0 6px;font-size:1.5rem}.author-bio{color:var(--muted);max-width:60ch;font-family:var(--font-caption);margin:0;font-style:italic}.author-links{color:var(--muted);flex-wrap:wrap;gap:12px;margin:8px 0 0;padding:0;list-style:none;display:flex}.author-links a{color:var(--muted);font-size:13px;transition:color .15s ease-out}.author-links a:hover{color:var(--accent)}.album-section-title{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:4px 20px 12px;font-size:12px}.album-grid{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));padding:0 20px 28px;display:grid}.album-card,.album-card-link,.album-card-static{display:block}.album-card-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.album-cover{aspect-ratio:1;background:var(--surface);position:relative;overflow:hidden}.album-cover-blur,.album-cover-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.album-cover-img{transition:transform .4s ease-out}.album-card-link:hover .album-cover-img,.album-card-link:focus-visible .album-cover-img{transform:scale(1.03)}.album-cover-empty{color:var(--faint);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.album-cover-empty .icon{width:32px;height:32px}.album-meta{justify-content:space-between;align-items:baseline;gap:8px;padding:8px 2px 0;display:flex}.album-title{color:var(--fg);font-size:14px;transition:color .15s ease-out}.album-count{color:var(--muted);white-space:nowrap;font-size:12px}.album-card-link:hover .album-title,.album-card-link:focus-visible .album-title{color:var(--accent)}@media (prefers-reduced-motion:reduce){.album-cover-img,.album-title{transition:none}.album-card-link:hover .album-cover-img,.album-card-link:focus-visible .album-cover-img{transform:none}}.album-manage{flex-wrap:wrap;align-items:center;gap:8px;padding:6px 2px 0;display:flex}.album-manage-rename,.album-delete-arm,.album-delete-confirm{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;padding:3px 10px;font-size:12px;line-height:1.4;transition:color .15s ease-out,border-color .15s ease-out}.album-manage-rename,.album-delete-arm{color:var(--muted)}.album-manage-rename:hover,.album-delete-arm:hover{color:var(--accent);border-color:var(--accent)}.album-delete-confirm{color:var(--danger);border-color:var(--danger);font-weight:600}.album-delete-confirm:disabled{opacity:.6;cursor:default}.album-delete{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.album-delete-hint,.album-delete-error{font-size:12px}.album-delete-hint{color:var(--muted)}.album-delete-error{color:var(--danger)}.album-rename{gap:6px;padding:8px 2px 0;display:grid}.album-rename-input{background:var(--surface);border:1px solid var(--line);width:100%;color:var(--fg);border-radius:6px;padding:6px 8px;font-size:14px}.album-rename-input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.album-rename-actions{gap:8px;display:flex}.album-rename-actions button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:3px 10px;font-size:12px;line-height:1.4;transition:color .15s ease-out,border-color .15s ease-out}.album-rename-actions button:first-child{color:var(--accent);border-color:var(--accent)}.album-rename-actions button:disabled{opacity:.6;cursor:default}.album-rename-error{color:var(--danger);margin:0;font-size:12px}@media (prefers-reduced-motion:reduce){.album-manage-rename,.album-delete-arm,.album-delete-confirm,.album-rename-actions button{transition:none}}.section-header{gap:12px;padding:24px 20px 20px;display:grid}.section-header h1{text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:1.5rem}.search-form{gap:8px;display:flex}.search-form input{background:var(--surface);border:1px solid var(--line);max-width:480px;color:var(--fg);border-radius:999px;flex:320px;padding:10px 14px;font-size:16px}.search-form input::placeholder{color:var(--muted)}.search-form input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.search-form button{border:1px solid var(--muted);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;padding:10px 18px;font-size:14px;transition:border-color .15s ease-out,color .15s ease-out}.search-form button:hover{border-color:var(--accent);color:var(--accent)}@media (prefers-reduced-motion:reduce){.author-links a,.search-form button{transition:none}}.auth-page{max-width:420px;margin:0 auto;padding:0 20px 60px}.auth-form,.profile-form,.upload-form{gap:16px;display:grid}.auth-form label,.profile-form label,.upload-form label{color:var(--muted);gap:6px;font-size:14px;display:grid}.auth-form input,.profile-form input,.profile-form textarea,.upload-form input,.upload-form textarea,.token-issue-form input{background:var(--surface);border:1px solid var(--line);color:var(--fg);border-radius:999px;padding:10px 14px;font-family:inherit;font-size:16px}.profile-form textarea,.upload-form textarea{resize:vertical;border-radius:12px;min-height:4.5em}.upload-form input[type=file]{border-radius:12px;padding:10px}.auth-form input:focus-visible,.profile-form input:focus-visible,.profile-form textarea:focus-visible,.upload-form input:focus-visible,.upload-form textarea:focus-visible,.token-issue-form input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.auth-optional{color:var(--faint);text-transform:none;letter-spacing:normal;font-weight:400}.auth-form button[type=submit],.profile-form button[type=submit],.upload-form button[type=submit],.upload-done-actions button,.token-issue-form button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:10px 22px;font-size:14px;transition:background-color .15s ease-out,color .15s ease-out}.auth-form button[type=submit]:hover:not(:disabled),.profile-form button[type=submit]:hover:not(:disabled),.upload-form button[type=submit]:hover:not(:disabled),.upload-done-actions button:hover:not(:disabled),.token-issue-form button:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.auth-form button:disabled,.profile-form button:disabled,.upload-form button:disabled,.token-issue-form button:disabled{cursor:default;opacity:.6}.auth-error{color:var(--danger);font-size:14px}.auth-success{color:var(--fg);font-family:var(--font-caption);font-size:16px;font-style:italic}.auth-hint{color:var(--muted);font-size:13px}.upload-done{gap:16px;display:grid}.upload-done-actions{align-items:center;gap:16px;display:flex}.upload-done-actions a{color:var(--accent)}.upload-done-actions a:hover{text-decoration:underline}.album-picker{gap:10px;display:grid}.album-picker label{color:var(--muted);gap:6px;font-size:14px;display:grid}.album-picker select,.album-picker-new input{background:var(--surface);border:1px solid var(--line);color:var(--fg);border-radius:999px;padding:10px 14px;font-family:inherit;font-size:16px}.album-picker select:focus-visible,.album-picker-new input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.album-picker-new{gap:8px;display:flex}.album-picker-new input{flex:1;min-width:0}.album-picker-new button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;padding:8px 18px;font-size:13px;transition:background-color .15s ease-out,color .15s ease-out}.album-picker-new button:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.album-picker select:disabled,.album-picker-new input:disabled,.album-picker-new button:disabled{opacity:.6;cursor:default}@media (prefers-reduced-motion:reduce){.album-picker-new button{transition:none}}.auth-links{flex-direction:column;gap:8px;margin-top:20px;font-size:13px;display:flex}.auth-links a{color:var(--muted);transition:color .15s ease-out}.auth-links a:hover{color:var(--accent)}.user-menu{align-items:center;gap:4px;display:flex}.user-menu button{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;transition:color .15s ease-out}.user-menu a:hover,.user-menu button:hover{color:var(--accent)}.confirm-banner{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-soft);color:var(--muted);border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;margin:0 20px 20px;padding:12px 16px;font-size:14px;display:flex}.confirm-banner button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;padding:6px 16px;font-size:13px}.confirm-banner button:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.confirm-banner button:disabled{cursor:default;opacity:.6}.profile-page,.tokens-page,.albums-page,.admin-page,.upload-page,.edit-photo-page{max-width:640px;margin:0 auto;padding:0 20px 60px}.edit-photo-form{gap:18px;display:grid}.edit-photo-actions{align-items:center;gap:16px;display:flex}.edit-photo-actions button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:10px 22px;font-size:14px;transition:background-color .15s ease-out,color .15s ease-out}.edit-photo-actions button:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.edit-photo-actions button:disabled{cursor:default;opacity:.6}.edit-photo-cancel{color:var(--muted)}.edit-photo-cancel:hover{color:var(--fg)}.profile-subheading{text-transform:uppercase;letter-spacing:.08em;margin:32px 0 16px;font-size:1.1rem}.profile-links{border:0;gap:10px;margin:0;padding:0;display:grid}.profile-links legend{color:var(--muted);margin-bottom:4px;padding:0;font-size:14px}.profile-link-row{grid-template-columns:1fr 2fr auto;gap:8px;display:grid}.profile-link-row input{border-radius:999px}.profile-link-row button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:0 10px}.profile-link-row button:hover{border-color:var(--accent);color:var(--accent)}.profile-link-add{border:1px dashed var(--muted);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:6px 16px;font-size:13px}.profile-link-add:hover{border-color:var(--accent);color:var(--accent)}.token-reveal{background:var(--surface);border:1px solid var(--accent);border-radius:12px;gap:12px;margin-bottom:20px;padding:16px;display:grid}.token-reveal p{margin:0;font-size:14px}.token-value{background:var(--bg);border:1px solid var(--line);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:8px;padding:10px 14px;font-size:14px;display:block}.token-reveal-actions{gap:10px;display:flex}.token-reveal-actions button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;padding:8px 16px;font-size:13px}.token-reveal-actions button:hover{background:var(--accent);color:var(--on-accent)}.token-issue-form{gap:8px;margin:20px 0;display:flex}.token-issue-form input{flex:1}.token-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.token-list li{border-top:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:10px;padding:12px 0;display:flex}.token-label{font-weight:600}.token-dates{color:var(--muted);flex:auto;font-size:13px}.token-revoked{opacity:.55}.token-list li button{border:1px solid var(--muted);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;padding:6px 14px;font-size:13px}.token-list li button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.profile-nav{flex-wrap:wrap;gap:18px;margin:28px 0 0;display:flex}.profile-nav a{color:var(--accent);font-size:14px}.album-manager-new{gap:8px;margin:0 0 24px;display:grid}.album-manager-new-row{gap:8px;display:flex}.album-manager-new-row input{flex:1}.album-manager-unsorted{border:1px solid var(--line);color:var(--fg);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 20px;padding:12px 14px;display:flex}.album-manager-unsorted:hover{border-color:var(--accent)}.album-manager-unsorted-title{font-weight:600}.album-manager-unsorted-count{color:var(--muted);font-size:13px}.album-manager-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.album-manager-row{border-top:1px solid var(--line);align-items:flex-start;gap:12px;padding:12px 0;display:flex}.album-manager-check{width:18px;height:18px;accent-color:var(--accent);flex:none;margin-top:3px}.album-manager-main{flex:auto;min-width:0}.album-manager-title{color:var(--fg);font-weight:600}.album-manager-title:hover{color:var(--accent)}.album-manager-meta{color:var(--muted);margin:2px 0 0;font-size:13px}.album-manager-rename{flex-wrap:wrap;gap:8px;display:flex}.album-manager-rename input{flex:200px;min-width:0}.album-manager-actions{flex-wrap:wrap;flex:none;gap:8px;display:flex}.album-manager-actions button,.album-manager-rename button{border:1px solid var(--muted);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;padding:6px 14px;font-size:13px}.album-manager-actions button:hover:not(:disabled),.album-manager-rename button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.album-manager-actions button:disabled,.album-manager-rename button:disabled{cursor:default;opacity:.6}.album-manager-error{color:var(--danger);margin:6px 0 0;font-size:13px}.album-manager-empty{color:var(--muted)}.album-manager-notice{background:var(--accent-soft);color:var(--fg);border-radius:10px;margin:0 0 16px;padding:10px 14px;font-size:14px}.album-manager-delete{color:var(--danger)}.album-manager-actions button.album-manager-delete:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.album-manager-bulk{background:var(--bg);border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:12px 0;font-size:14px;display:flex;position:sticky;bottom:0}.album-manager-bulk button{border:1px solid var(--danger);color:var(--danger);cursor:pointer;background:0 0;border-radius:999px;padding:8px 18px;font-size:14px}.album-manager-bulk button:hover{background:var(--danger);color:var(--on-accent)}.album-dialog{border:1px solid var(--line);background:var(--surface);width:min(440px,100vw - 32px);color:var(--fg);box-shadow:var(--shadow);border-radius:14px;padding:20px}.album-dialog::backdrop{background:var(--scrim-page)}.album-dialog-title{margin:0 0 16px;font-size:1.1rem}.album-dialog-choice{border:0;gap:10px;margin:0 0 16px;padding:0;display:grid}.album-dialog-choice legend{color:var(--muted);margin-bottom:8px;padding:0;font-size:13px}.album-dialog-choice label{align-items:flex-start;gap:8px;font-size:14px;display:flex}.album-dialog-choice input{accent-color:var(--accent);margin-top:2px}.album-dialog-danger{border:1px solid var(--danger);border-radius:10px;gap:10px;margin:0 0 16px;padding:12px 14px;font-size:14px;display:grid}.album-dialog-danger p{margin:0}.album-dialog-danger label{color:var(--muted);gap:6px;font-size:13px;display:grid}.album-dialog-list{max-height:40vh;margin:0 0 12px;padding-left:20px;font-size:14px;overflow-y:auto}.album-dialog-note{color:var(--muted);margin:0 0 16px;font-size:13px}.album-dialog-error{color:var(--danger);margin:0 0 12px;font-size:13px}.album-dialog-actions{justify-content:flex-end;gap:10px;display:flex}.album-dialog-actions button{border:1px solid var(--muted);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;padding:8px 18px;font-size:14px}.album-dialog-actions button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.album-dialog-confirm{border-color:var(--danger);color:var(--danger)}.album-dialog-actions button.album-dialog-confirm:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:var(--on-accent)}.album-dialog-actions button:disabled{cursor:default;opacity:.5}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:14px}.admin-table th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);padding:8px 10px;font-size:12px;font-weight:500}.admin-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:10px}.admin-table input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}@media (prefers-reduced-motion:reduce){.auth-form button,.profile-form button,.upload-form button,.upload-done-actions button,.token-issue-form button,.token-reveal-actions button,.token-list li button,.confirm-banner button,.user-menu a,.user-menu button,.auth-links a,.profile-link-row button,.profile-link-add{transition:none}}.reactions-block{gap:8px;display:grid}.reactions{flex-wrap:wrap;gap:8px;display:flex}.reaction-pill{border:1px solid var(--line);color:var(--fg);cursor:default;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-size:17px;line-height:1;transition:border-color .15s ease-out,color .15s ease-out;display:inline-flex}.reaction-pill .reaction-count{font-variant-numeric:tabular-nums;font-size:14px}a.reaction-pill,button.reaction-pill{cursor:pointer}a.reaction-pill:hover,button.reaction-pill:hover:not(:disabled),.reaction-pill.active{border-color:var(--accent);color:var(--accent)}.reaction-pill:disabled{cursor:default;opacity:.6}.reaction-count{font-variant-numeric:tabular-nums;color:var(--muted)}.reaction-pill.active .reaction-count{color:inherit}.comments{border-top:1px solid var(--line);margin-top:24px;padding-top:24px}.comment-list{gap:16px;margin:0 0 20px;padding:0;list-style:none;display:grid}.comment{border-top:1px solid var(--line);padding-top:12px}.comment:first-child{border-top:0;padding-top:0}.comment-meta{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:4px;font-size:13px;display:flex}.comment-author{font-weight:600}.comment-time{color:var(--muted)}.comment-delete{color:var(--muted);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0;font-size:13px;transition:color .15s ease-out}.comment-delete:hover:not(:disabled){color:var(--accent)}.comment-delete:disabled{cursor:default;opacity:.6}.comment-body{white-space:pre-wrap;overflow-wrap:break-word;margin:0}.comment-form{gap:8px;display:grid}.comment-form label{color:var(--muted);font-size:14px}.comment-form textarea{background:var(--surface);border:1px solid var(--line);color:var(--fg);resize:vertical;border-radius:12px;min-height:4.5em;padding:10px 14px;font-family:inherit;font-size:16px}.comment-form textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.comment-form-row{align-items:center;gap:14px;display:flex}.comment-remaining{color:var(--muted);font-size:13px}.comment-form button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:8px 20px;font-size:14px;transition:background-color .15s ease-out,color .15s ease-out}.comment-form button:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.comment-form button:disabled{cursor:default;opacity:.6}.admin-row-blocked{background:color-mix(in srgb, var(--accent) 12%, transparent)}.admin-blocked-badge{border:1px solid var(--accent);color:var(--accent);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:11px}@media (prefers-reduced-motion:reduce){.reaction-pill,.comment-delete,.comment-form button{transition:none}}.feed{flex-direction:column;gap:28px;max-width:620px;margin:0 auto;padding:0 16px;display:flex}.feed-card{background:var(--bg);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:4px;overflow:hidden}.feed-head{align-items:center;gap:10px;padding:12px 14px;display:flex}.feed-author{color:var(--fg);align-items:center;gap:10px;min-width:0;text-decoration:none;display:flex}.feed-author:hover .feed-nickname{color:var(--accent)}.feed-avatar{object-fit:cover;background:var(--surface);border-radius:50%;flex:none;width:32px;height:32px}.feed-avatar-letter{color:var(--muted);border:1px solid var(--line);justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.feed-nickname{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.feed-date{color:var(--muted);flex:none;margin-left:auto;font-size:12px}.feed-frame{display:block}.feed-frame:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.feed-foot{border-top:1px solid var(--line);flex-direction:column;gap:10px;padding:12px 14px 14px;display:flex}.feed-caption{font-family:var(--font-caption);color:var(--fg);margin:0;font-size:15px;line-height:1.45}.feed-counts{color:var(--muted);align-items:center;gap:18px;font-size:14px;text-decoration:none;display:flex}.feed-caption+.feed-counts{border-top:1px solid var(--line);padding-top:10px}.icon{flex:none;width:20px;height:20px;display:block}.feed-counts:hover{color:var(--accent)}.feed-count{font-variant-numeric:tabular-nums;align-items:center;gap:7px;display:inline-flex}.feed-count-heart{color:#e0245e}.feed-count-empty{color:var(--muted)}@media (max-width:700px){.feed{gap:16px;padding:0}.feed-card{border-left:none;border-right:none;border-radius:0}}@media (max-width:640px){.site-header{flex-wrap:wrap;gap:8px 12px;padding:12px 14px}.site-nav,.user-menu{flex-wrap:wrap;gap:8px 12px;font-size:14px}.site-title{flex:1 0 auto}.photo-grid{padding:0 12px}.auth-page,.profile-page,.admin-page{padding-left:14px;padding-right:14px}}.photo-delete{align-items:center;margin-left:10px;display:inline-flex}.photo-delete-arm,.photo-delete-confirm{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;padding:3px 10px;font-size:12px;line-height:1.4;transition:color .15s ease-out,border-color .15s ease-out}.photo-delete-arm{color:var(--muted)}.photo-delete-arm:hover{color:var(--danger);border-color:var(--danger)}.photo-delete-confirm{color:var(--danger);border-color:var(--danger);font-weight:600}.photo-delete-confirm:disabled{opacity:.6;cursor:default}.photo-delete-error{color:var(--danger);margin-left:8px;font-size:12px}.photo-edit{align-items:center;margin-left:10px;display:inline-flex}.photo-edit-link{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:3px 10px;font-size:12px;line-height:1.4;text-decoration:none;transition:color .15s ease-out,border-color .15s ease-out}.photo-edit-link:hover{color:var(--accent);border-color:var(--accent)}@media (prefers-reduced-motion:reduce){.photo-edit-link,.photo-delete-arm,.photo-delete-confirm{transition:none}}.crop-frame{touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0}.crop-frame-scrim{background:var(--scrim);pointer-events:none;position:absolute}.crop-frame-scrim-top,.crop-frame-scrim-bottom{left:0;right:0}.crop-frame-scrim-top{top:0}.crop-frame-scrim-bottom{bottom:0}.crop-frame-scrim-left{left:0}.crop-frame-scrim-right{right:0}.crop-frame-window{box-sizing:border-box;border:2px solid var(--on-photo);cursor:grab;position:absolute;box-shadow:0 0 0 1px #0000008c,inset 0 0 0 1px #0000008c}.crop-frame-window:active{cursor:grabbing}.crop-frame-corner{touch-action:none;background:0 0;border:none;width:44px;height:44px;margin:0;padding:0;position:absolute}.crop-frame-corner-nw{cursor:nwse-resize;top:0;left:0;transform:translate(-50%,-50%)}.crop-frame-corner-ne{cursor:nesw-resize;top:0;right:0;transform:translate(50%,-50%)}.crop-frame-corner-sw{cursor:nesw-resize;bottom:0;left:0;transform:translate(-50%,50%)}.crop-frame-corner-se{cursor:nwse-resize;bottom:0;right:0;transform:translate(50%,50%)}.crop-frame-corner:after{content:"";border:3px solid var(--on-photo);filter:drop-shadow(0 0 1px #0009);width:18px;height:18px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crop-frame-corner-nw:after{border-bottom-color:#0000;border-right-color:#0000}.crop-frame-corner-ne:after{border-bottom-color:#0000;border-left-color:#0000}.crop-frame-corner-sw:after{border-top-color:#0000;border-right-color:#0000}.crop-frame-corner-se:after{border-top-color:#0000;border-left-color:#0000}.photo-editor{display:block}.photo-editor>*+*{margin-top:18px}.photo-editor-stage{background:var(--surface);box-shadow:var(--shadow-soft);position:relative;overflow:hidden}.photo-editor-loading{text-align:center;color:var(--muted);margin:0;padding:40px 16px;font-size:14px}.photo-editor-frame{position:absolute;inset:0;container-type:size}.photo-editor-photo{position:absolute;top:50%;left:50%}.photo-editor-photo:not(.photo-editor-photo-swapped){width:100cqw;height:100cqh}.photo-editor-photo.photo-editor-photo-swapped{width:100cqh;height:100cqw}.photo-editor-toolbar{align-items:center;gap:14px;display:flex}.photo-editor-rotate{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--fg);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:border-color .15s ease-out,color .15s ease-out;display:flex}.photo-editor-rotate:hover{border-color:var(--accent);color:var(--accent)}.icon-rotate{width:22px;height:22px}.photo-editor-full-frame{border:1px solid var(--line);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;padding:10px 18px;font-size:14px;transition:border-color .15s ease-out,color .15s ease-out}.photo-editor-full-frame:hover{border-color:var(--accent);color:var(--accent)}.photo-editor-sliders{gap:14px;display:grid}.photo-editor-slider{color:var(--muted);gap:6px;display:grid}.photo-editor-slider-label{justify-content:space-between;font-size:16px;display:flex}.photo-editor-slider-value{color:var(--fg);font-variant-numeric:tabular-nums}.photo-editor-slider input[type=range]{appearance:none;background:0 0;width:100%;height:28px;margin:0;font-size:16px}.photo-editor-slider input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:999px;height:4px}.photo-editor-slider input[type=range]::-moz-range-track{background:var(--line);border-radius:999px;height:4px}.photo-editor-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);border:2px solid var(--bg);width:22px;height:22px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border-radius:50%;margin-top:-9px}.photo-editor-slider input[type=range]::-moz-range-thumb{background:var(--accent);border:2px solid var(--bg);width:22px;height:22px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border-radius:50%}.photo-editor-slider input[type=range]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.photo-editor-grayscale{color:var(--fg);cursor:pointer;align-items:center;gap:10px;font-size:16px;display:flex}.photo-editor-grayscale input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.photo-editor-reset{border:1px solid var(--line);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:10px 22px;font-size:14px;transition:border-color .15s ease-out,color .15s ease-out,opacity .15s ease-out}.photo-editor-reset:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.photo-editor-reset:disabled{cursor:default;opacity:.5}.album-order-error{background:var(--accent-soft);color:var(--danger);border-radius:10px;margin:0 0 16px;padding:10px 14px;font-size:14px}.album-order-notice{background:var(--accent-soft);color:var(--fg);border-radius:10px;margin:0 0 16px;padding:10px 14px;font-size:14px}.album-order-dropzone{margin:0 0 var(--gap);border:1px dashed var(--muted);color:var(--muted);border-radius:10px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;transition:border-color .15s ease-out,color .15s ease-out,background .15s ease-out;display:flex}.album-order-dropzone .icon{flex:none;width:18px;height:18px}.album-order-dropzone.is-drag-over{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.album-order-grid{columns:3 320px;column-gap:var(--gap);margin:0;padding:0;list-style:none}.album-order-card{break-inside:avoid;margin-bottom:var(--gap);display:block}.album-order-frame{background:var(--surface);border-radius:6px;position:relative;overflow:hidden}.album-order-cover-badge{background:var(--scrim);width:28px;height:28px;color:var(--on-photo);border-radius:999px;justify-content:center;align-items:center;display:flex;position:absolute;top:8px;left:8px}.album-order-cover-badge .icon{width:16px;height:16px}.album-order-select{background:var(--scrim);border-radius:6px;padding:4px;display:flex;position:absolute;top:8px;right:8px}.album-order-select input{width:20px;height:20px;accent-color:var(--accent);margin:0}.album-order-handle{background:var(--scrim);width:30px;height:30px;color:var(--on-photo);cursor:grab;border-radius:999px;justify-content:center;align-items:center;display:flex;position:absolute;bottom:8px;right:8px}.album-order-handle:active{cursor:grabbing}.album-order-handle .icon{width:18px;height:18px}.album-order-actions{gap:6px;margin-top:6px;display:flex}.album-order-actions button{border:1px solid var(--muted);color:var(--fg);cursor:pointer;background:0 0;border-radius:999px;flex:1;padding:6px 8px;font-size:12px}.album-order-actions button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.album-order-actions button:disabled{cursor:default;opacity:.5}.move-photos-panel{background:var(--bg);border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:12px 0;font-size:14px;display:flex;position:sticky;bottom:0}.move-photos-panel-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.move-photos-panel-controls select{border:1px solid var(--muted);background:var(--bg);color:var(--fg);border-radius:999px;padding:6px 10px}.move-photos-panel-controls button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:999px;padding:8px 18px;font-size:14px}.move-photos-panel-controls button:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.move-photos-panel-controls button:disabled{cursor:default;opacity:.5}.move-photos-panel-hint{color:var(--muted);font-size:13px}.move-photos-panel-error{color:var(--danger);flex:100%;margin:0;font-size:13px}.feed-reactions{margin:8px 0 4px}.feed-reactions .reaction-pill{padding:4px 8px;font-size:13px}@media (max-width:1199px){.photo-page{flex-direction:column;display:flex}.photo-main,.photo-side{display:contents}.photo-stage{width:100%;aspect-ratio:var(--photo-w) / var(--photo-h);width:min(100%, calc(78vh * var(--photo-w) / var(--photo-h)));flex:none;order:1;margin-inline:auto}.photo-meta{order:2}.photo-nav{order:3}.photo-side .comments{order:4}}@media (min-width:1200px){.photo-page{grid-template-columns:minmax(0, 1fr) var(--photo-panel);max-width:none;height:calc(100vh - var(--header-h));padding:0;display:grid}.photo-main{background:var(--stage);place-items:center;min-width:0;padding:24px;display:grid;position:relative;container-type:size}.photo-stage{aspect-ratio:var(--photo-w) / var(--photo-h);height:min(100cqh, calc(100cqw * var(--photo-h) / var(--photo-w)));width:auto}.photo-side{border-left:1px solid var(--line);flex-direction:column;min-width:0;padding:0 24px 24px;display:flex;overflow-y:auto}.photo-side .photo-meta{padding-top:20px}.photo-side .reactions{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.photo-side .reaction-pill{justify-content:center;padding-inline:6px}.photo-main .photo-nav{pointer-events:none;border:0;justify-content:space-between;align-items:center;margin:0;padding:0 16px;display:flex;position:absolute;inset:0}.photo-main .photo-nav-link{pointer-events:auto;background:var(--stage-control);color:var(--stage-control-fg);border-radius:999px;padding:18px 12px;font-size:0;line-height:1}.photo-main .photo-nav-link:before{letter-spacing:0;font-size:22px}.photo-main .photo-nav-link[rel=prev]:before{content:"←"}.photo-main .photo-nav-link[rel=next]:before{content:"→"}.photo-main .photo-nav-link.disabled{opacity:.35}.photo-side .comment-form{background:var(--bg);margin-top:auto;padding-top:12px;position:sticky;bottom:0}}
