:root{--accent:#ff5a76;--accent-ink:#fff}*{box-sizing:border-box}html,body,#root{min-height:100vh;margin:0}body{color:#fff;-webkit-font-smoothing:antialiased;background:#1c1c1c;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}main{text-align:center;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}section{max-width:34rem}h1{letter-spacing:-.02em;margin:0 0 .5rem;font-weight:600}.wordmark{font-size:2rem}.muted{color:#a0a0a0}a{color:#fff}main.page-gallery{align-items:initial;justify-content:initial;text-align:left;padding:0;display:block}.gallery{max-width:1280px;margin:0 auto;padding:1.25rem 1.5rem 4rem}.gallery-header{background:#262626;border-radius:12px;margin-bottom:1.25rem;overflow:hidden}.hero-img{object-fit:cover;width:100%;max-height:420px;display:block}.gallery-header-text{padding:1rem 1.25rem}.gallery-header-text h1{overflow-wrap:anywhere}.masonry{column-width:240px;column-gap:12px}.tile{break-inside:avoid;cursor:pointer;background:#262626;border-radius:8px;width:100%;margin-bottom:12px;display:inline-block;position:relative;overflow:hidden}.tile:focus-visible{outline-offset:-2px;outline:2px solid #fff}.tile-frame{background:#232323;width:100%}.tile-frame img{object-fit:cover;width:100%;height:100%;display:block}.tile-broken{color:#666;justify-content:center;align-items:center;height:100%;min-height:120px;display:flex}.tile-notready{cursor:default;opacity:.4}.tile-spinner{color:#a0a0a0;justify-content:center;align-items:center;font-size:1.4rem;animation:1.2s linear infinite tile-spin;display:flex;position:absolute;inset:0}@keyframes tile-spin{to{transform:rotate(360deg)}}.heart-badge{color:#c9c9c9;pointer-events:none;background:#0000008c;border-radius:999px;padding:2px 8px;font-size:.9rem;position:absolute;bottom:8px;right:8px}.heart-badge.filled{color:var(--accent)}.empty{text-align:center;color:#a0a0a0;padding:5rem 0}.auth-card{width:min(24rem,100%)}.auth-row{gap:.5rem;margin-top:1rem;display:flex}.auth-card input{color:#fff;min-width:0;font:inherit;background:#262626;border:1px solid #3a3a3a;border-radius:8px;flex:1;padding:.6rem .75rem}.auth-error{color:#ff5a76;margin:.6rem 0 0}button{color:#fff;font:inherit;cursor:pointer;background:#333;border:1px solid #3a3a3a;border-radius:8px;padding:.55rem 1rem}button:hover:not(:disabled){background:#404040}button:disabled{opacity:.45;cursor:default}.error-view{width:min(28rem,100%)}.error-view button{margin-top:.75rem}.toast{z-index:60;border:1px solid var(--accent);color:#ffc2cd;background:#2a2a2a;border-radius:8px;padding:.6rem 1.1rem;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)}.lightbox{z-index:50;background:#000000eb;flex-direction:column;display:flex;position:fixed;inset:0}.lb-topbar{justify-content:flex-end;gap:.5rem;padding:.75rem 1rem;display:flex}.lb-heart{color:#c9c9c9}.lb-heart.filled{color:var(--accent);border-color:var(--accent)}.lb-body{flex:1;min-height:0;display:flex}.lb-stage{flex:1;justify-content:center;align-items:center;min-width:0;padding:0 3.5rem;display:flex;position:relative}.lb-img-wrap{max-width:100%;max-height:100%;display:flex;position:relative}.lb-img-wrap .tile-spinner{font-size:2.5rem}.lb-img{object-fit:contain;border-radius:4px;max-width:100%;max-height:calc(100vh - 6rem)}.lb-arrow{background:#0006;border-radius:50%;width:2.6rem;height:2.6rem;padding:0;font-size:2rem;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.lb-arrow-left{left:.6rem}.lb-arrow-right{right:.6rem}.lb-panel{background:#1e1e1e;border-left:1px solid #2c2c2c;flex-direction:column;width:340px;display:flex}.lb-panel h2{color:#a0a0a0;margin:0;padding:.9rem 1rem .5rem;font-size:1rem;font-weight:600}.lb-comments{flex-direction:column;flex:1;gap:.75rem;padding:0 1rem;display:flex;overflow-y:auto}.lb-comment-body{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:.95rem}.lb-comment-time{color:#888;font-size:.8rem}.lb-compose{border-top:1px solid #2c2c2c;padding:.9rem 1rem 1rem}.lb-compose textarea{color:#fff;width:100%;min-height:4.5rem;font:inherit;resize:vertical;background:#262626;border:1px solid #3a3a3a;border-radius:8px;padding:.6rem .7rem}.lb-compose-row{align-items:center;gap:.6rem;margin-top:.5rem;display:flex}.char-count{color:#888;margin-left:auto;font-size:.8rem}.char-count.over{color:#ff5a76}.lb-downloads{border-top:1px solid #2c2c2c;gap:.5rem;padding:.75rem 1rem 1rem;display:flex}.gallery-downloads{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.6rem;display:flex}@media (width<=900px){.lb-body{flex-direction:column}.lb-stage{padding:0 3rem}.lb-panel{border-top:1px solid #2c2c2c;border-left:none;width:auto;max-height:44vh}.lb-img{max-height:calc(56vh - 4rem)}}main.page-admin{align-items:initial;justify-content:initial;text-align:left;padding:0;display:block}.admin{max-width:1080px;margin:0 auto;padding:1.5rem 1.5rem 4rem}.admin-detail-page{max-width:1080px}.admin-topbar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.small{font-size:.82rem}.admin input:not([type=checkbox]):not([type=file]){color:#fff;font:inherit;background:#262626;border:1px solid #3a3a3a;border-radius:8px;padding:.55rem .75rem}.admin-new{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.admin-new input{flex:14rem;min-width:0}.admin-new .admin-new-slug{flex:0 10rem}.admin-new .auth-error{flex:1 0 100%;margin:0}.admin-table{border-collapse:collapse;width:100%;font-size:.95rem}.admin-table th{text-align:left;color:#a0a0a0;text-transform:uppercase;letter-spacing:.04em;font-size:.82rem;font-weight:600}.admin-table th,.admin-table td{vertical-align:middle;border-bottom:1px solid #2c2c2c;padding:.6rem .75rem}.admin-table th.num,.admin-table td.num{text-align:right}.admin-table code{color:#a0a0a0;overflow-wrap:anywhere;font-size:.85rem}.admin-row{cursor:pointer}.admin-row:hover{background:#232323}.admin-row-title{overflow-wrap:anywhere;font-weight:500}.lock-badge{color:#a0a0a0;margin-left:.45rem;font-size:.78rem}.lock-badge.locked{color:#c9c9c9}.admin-detail-top{margin-bottom:.5rem}.admin-back{padding:.35rem .8rem;font-size:.9rem}.admin-detail-header{margin-bottom:1.25rem}.admin-detail-header h1{overflow-wrap:anywhere}.admin-card{text-align:left;background:#1e1e1e;border:1px solid #2c2c2c;border-radius:12px;margin-bottom:1.25rem;padding:1.1rem 1.25rem 1.25rem}.admin-card h2{color:#a0a0a0;text-transform:uppercase;letter-spacing:.04em;margin:0 0 .9rem;font-size:1rem;font-weight:600}.admin-lock-state{margin:0 0 .9rem}.admin-settings{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem 1.5rem;display:grid}.admin-field{flex-direction:column;gap:.35rem;display:flex}.admin-field>input{width:100%;min-width:0}.admin-field-label{color:#a0a0a0;font-size:.85rem}.admin-check{color:#c9c9c9;cursor:pointer;align-items:center;gap:.5rem;margin-top:.4rem;font-size:.9rem;display:flex}.admin-check input[type=checkbox]{accent-color:#ff5a76;width:1rem;height:1rem}.admin-save-row{align-items:center;gap:1rem;margin-top:1.1rem;display:flex}.admin-save-row .auth-error{margin:0}.dropzone{text-align:center;cursor:pointer;border:2px dashed #4a4a4a;border-radius:12px;padding:1.5rem 1.25rem;transition:border-color .15s,background-color .15s}.dropzone.over{background:#262626;border-color:#fff}.dropzone-label{margin:0 0 .75rem;font-weight:500}.dropzone-buttons{flex-wrap:wrap;justify-content:center;gap:.6rem;margin-bottom:.6rem;display:flex}.upload-list{text-align:left;flex-direction:column;gap:.45rem;max-height:260px;margin:1rem 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.upload-row{align-items:center;gap:.6rem;min-width:0;font-size:.9rem;display:flex}.upload-mark{text-align:center;flex:none;width:1.1rem}.upload-done .upload-mark{color:#56d364}.upload-failed .upload-mark{color:#ff5a76}.upload-name{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;max-width:40%;overflow:hidden}.upload-error{color:#ff5a76;overflow-wrap:anywhere;font-size:.85rem}.progress{background:#2c2c2c;border-radius:999px;flex:8rem;height:.7rem;position:relative;overflow:hidden}.progress-fill{background:#56d364;border-radius:999px;transition:width .12s linear;position:absolute;inset:0 auto 0 0}.progress-text{color:#c9c9c9;justify-content:center;align-items:center;font-size:.62rem;display:flex;position:absolute;inset:0}.thumb-hint{margin:0 0 .6rem}.thumb-strip{gap:8px;padding-bottom:.6rem;display:flex;overflow-x:auto}.thumb-tile{cursor:grab;background:#262626;border:2px solid #0000;border-radius:8px;flex:none;width:96px;height:96px;position:relative;overflow:hidden}.thumb-tile:focus-visible{outline-offset:-2px;outline:2px solid #fff}.thumb-tile.drop-target{border-color:#fff}.thumb-tile.cover{border-color:#ffd056}.thumb-tile img{object-fit:cover;pointer-events:none;width:100%;height:100%}.thumb-tile.notready{opacity:.4}.thumb-retry{background:#00000059;border:none;border-radius:0;width:100%;height:100%;padding:0;font-size:1.6rem;line-height:1;position:absolute;inset:0}.thumb-cover{z-index:2;background:#0000008c;border:none;border-radius:6px;padding:.05rem .35rem;font-size:.9rem;line-height:1.35;position:absolute;bottom:4px;left:4px}.thumb-cover.is-cover{color:#ffd056}.thumb-cover:disabled{opacity:.5}.thumb-delete{z-index:2;background:#0000008c;border:none;border-radius:6px;padding:.05rem .4rem;font-size:.95rem;line-height:1.3;position:absolute;top:4px;right:4px}.thumb-delete:hover:not(:disabled){background:#8a2b3a}.thumb-delete:disabled{opacity:.5}.danger-zone{border-color:#5a2630}.danger-btn{color:#ff5a76;border-color:#ff5a76}.danger-btn:hover:not(:disabled){background:#3a1a20}.watermark-card{margin-top:1.5rem}.watermark-preview{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.watermark-preview img{background-color:#3a3a3a;background-image:linear-gradient(45deg,#2a2a2a 25%,#0000 25%),linear-gradient(-45deg,#2a2a2a 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#2a2a2a 75%),linear-gradient(-45deg,#0000 75%,#2a2a2a 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;border-radius:8px;max-width:min(20rem,100%);max-height:8rem;padding:.5rem}.watermark-actions{flex-wrap:wrap;gap:.5rem;display:flex}.admin-login{text-align:left;width:min(24rem,100%)}.admin-login h1{margin-bottom:.25rem}.admin-list-error{margin-top:1rem}.admin-list-error button{margin-top:.5rem}.admin-tabs{border-bottom:1px solid #2c2c2c;gap:.4rem;margin-bottom:1.25rem;display:flex}.admin-tab{color:#a0a0a0;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:8px 8px 0 0;padding:.55rem 1.1rem}.admin-tab:hover:not(:disabled){background:#232323}.admin-tab.active{color:#fff;border-bottom-color:#fff}.sel-actions{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.sel-export{color:#fff;background:#333;border:1px solid #3a3a3a;border-radius:8px;padding:.55rem 1rem;font-size:.95rem;text-decoration:none;display:inline-block}.sel-export:hover{background:#404040}.sel-table{border-collapse:collapse;width:100%;font-size:.92rem}.sel-table th{text-align:left;color:#a0a0a0;text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.sel-table th,.sel-table td{vertical-align:top;border-bottom:1px solid #2c2c2c;padding:.55rem .7rem}.sel-table th.num,.sel-table td.num{text-align:right}.sel-thumb{object-fit:cover;color:#a0a0a0;background:#262626;border-radius:6px;justify-content:center;align-items:center;width:64px;height:64px;display:inline-flex}.sel-name{overflow-wrap:anywhere;min-width:8rem}.sel-fav{white-space:nowrap;color:#a0a0a0}.sel-fav.has{color:#ff5a76;font-weight:600}.badge{white-space:nowrap;border-radius:999px;padding:.1rem .55rem;font-size:.75rem;display:inline-block}.badge.ok{color:#56d364;background:#1d3324}.badge.warn{color:#e3b341;background:#3a2f14}.sel-comments{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.sel-comment{background:#232323;border-radius:8px;flex-direction:column;padding:.45rem .7rem;display:flex}.sel-comment-body{white-space:pre-wrap;overflow-wrap:anywhere}.sel-comment-time{color:#888;font-size:.78rem}.sel-comment-author{color:#cfcfcf;font-size:.78rem;font-weight:600}.sel-by{color:#bdbdbd;max-width:14rem}.sel-visitors{max-width:none;margin-bottom:1.25rem}.sel-visitors h3{margin:0 0 .5rem;font-size:.95rem;font-weight:600}.sel-visitor-table{border-collapse:collapse;width:100%;font-size:.92rem}.sel-visitor-table th,.sel-visitor-table td{text-align:left;border-bottom:1px solid #2c2c2c;padding:.45rem .5rem}.sel-visitor-table .num{text-align:right}.sel-visitor-name{font-weight:600}.sel-visitor-actions{flex-wrap:wrap;justify-content:flex-end;gap:.4rem;display:flex}.sel-filter{align-items:center;gap:.5rem;margin:0 0 .75rem;display:inline-flex}.sel-filter select{color:inherit;background:#262626;border:1px solid #3a3a3a;border-radius:8px;padding:.35rem .5rem}@media (width<=700px){.admin{padding:1rem .9rem 3rem}.admin-table th:nth-child(4),.admin-table td:nth-child(4){display:none}.thumb-tile{width:72px;height:72px}}.name-prompt-backdrop{z-index:70;background:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.name-prompt{text-align:left;background:#1e1e1e;border:1px solid #2c2c2c;border-radius:12px;padding:1.25rem 1.4rem}.name-prompt h2{margin:0 0 .4rem;font-size:1.15rem}.name-prompt form{flex-direction:column;gap:.6rem;margin-top:.9rem;display:flex}.name-prompt .auth-row{margin-top:.3rem}.link-btn{color:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.link-btn:hover:not(:disabled){color:#fff;background:0 0}.selection-bar{z-index:40;background:#1e1e1e;border:1px solid #2c2c2c;border-radius:12px;flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;width:max-content;max-width:calc(100vw - 2rem);padding:.6rem .9rem;display:flex;position:fixed;bottom:1rem;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #00000073}.selection-count{font-weight:600}.gallery.has-selection-bar{padding-bottom:5.5rem}.has-selection-bar .toast{bottom:5.5rem}@media (width<=600px){.gallery.has-selection-bar{padding-bottom:9rem}.has-selection-bar .toast{bottom:9rem}}.btn-accent,.btn-accent:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-accent:hover:not(:disabled){filter:brightness(1.08)}.brand-mark{color:inherit;align-items:center;text-decoration:none;display:inline-flex}.brand-logo{object-fit:contain;max-width:min(16rem,70vw);max-height:3rem;display:block}.brand-name{letter-spacing:-.01em;font-size:1.15rem;font-weight:600}.gallery-brand{margin:0 0 1rem}.auth-brand{margin-bottom:1.25rem}.home-brand .brand-logo{max-height:6rem;margin:0 auto 1rem}.home-mark{justify-content:center}.brand-footer{text-align:center;margin:3rem 0 1rem}.brand-footer a{color:inherit}.studio-card{margin-top:1.5rem}.studio-sub{margin:1.25rem 0 .5rem;font-size:.95rem;font-weight:600}.studio-logo-row{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.studio-logo-preview{background:#2a2a2a;border-radius:8px;max-width:12rem;max-height:3rem;padding:.35rem}.studio-color{align-items:center;gap:.5rem;display:flex}.studio-color input[type=color]{flex:none;width:2.6rem;height:2.2rem;padding:.1rem}.studio-test{gap:.5rem;margin-top:.9rem;display:flex}.studio-test input{flex:1;min-width:0}.send-link{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.9rem;display:flex}.send-link code{overflow-wrap:anywhere}.send-results,.send-history ul{gap:.35rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}
