@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500&family=Playfair+Display:ital,wght@0,500;1,500&display=swap";:root{--ink:#1d211e;--muted:#757872;--line:#d8dbd4;--paper:#f3f4ef}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;font-family:DM Sans,sans-serif;font-size:14px}button,input{font:inherit}button{cursor:pointer;color:inherit;background:0 0;border:0}button:disabled{cursor:not-allowed;opacity:.42}.app-shell{min-height:100vh}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:80px;padding:0 5vw;display:flex}.wordmark,.login-brand{letter-spacing:.18em;font-size:13px;font-weight:500;text-decoration:none}.wordmark span,.login-brand span{color:var(--muted);font-weight:400}.topbar-right{align-items:center;gap:22px;display:flex}.role,.eyebrow,.stats,small,.gallery-heading>span,.lightbox-caption p,.file-label{letter-spacing:.08em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:10px}.role{color:var(--muted)}.logout,.text-button{text-underline-offset:4px;font-size:12px;text-decoration:underline}.button{letter-spacing:.02em;padding:13px 17px}.button.dark{background:var(--ink);color:#fff}.button.wide{justify-content:space-between;align-items:center;width:100%;display:flex}.intro{max-width:1160px;margin:0 auto;padding:105px 5vw 84px}.eyebrow{color:var(--muted);margin:0 0 20px}.intro h1,.login-panel h1{letter-spacing:-.055em;margin:0;font-size:clamp(46px,7vw,89px);font-weight:400;line-height:.93}.intro h1 em,.login-panel h1 em{font-family:Playfair Display,serif;font-weight:500}.intro-copy{max-width:340px;color:var(--muted);margin:35px 0 0 31%;font-size:15px;line-height:1.6}.library-head{border-top:1px solid var(--line);justify-content:space-between;align-items:end;max-width:1160px;margin:0 auto;padding:26px 5vw 19px;display:flex}.stats{color:var(--ink);margin:0}.folder-status{color:var(--muted);flex-direction:column;align-items:flex-end;gap:8px;font-size:12px;display:flex}.folder-helper{color:var(--muted);text-align:right;max-width:300px;line-height:1.4}.folder-error{color:#a34535;text-align:right;max-width:300px;line-height:1.4}.content-grid{grid-template-columns:180px 1fr;gap:54px;max-width:1160px;margin:0 auto;padding:0 5vw 100px;display:grid}.filters{padding-top:15px}.filter{text-align:left;width:100%;color:var(--muted);justify-content:space-between;padding:7px 0;font-size:13px;display:flex}.filter span{font-family:DM Mono,monospace;font-size:10px}.filter.active{color:var(--ink)}.filter.active:before{content:"—";margin-right:6px}.gallery-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;margin:0 0 18px;padding-bottom:13px;display:flex}.gallery-heading h2{letter-spacing:-.03em;margin:0;font-size:24px;font-weight:400}.photo-grid{grid-template-columns:repeat(2,1fr);gap:38px 22px;display:grid}.photo-card{text-align:left;padding:0}.photo-open{text-align:left;width:100%;padding:0;display:block}.photo-frame{aspect-ratio:1.15;background:#dfe3da;overflow:hidden}.photo-frame img{object-fit:cover;filter:saturate();width:100%;height:100%;transition:transform .6s,filter .3s;display:block}.photo-open:hover img{filter:saturate();transform:scale(1.025)}.photo-meta{justify-content:space-between;align-items:flex-start;gap:12px;margin-top:11px;font-size:12px;display:flex}.photo-meta small{color:var(--muted);margin-top:6px;font-size:9px;display:block}.card-actions{gap:12px;display:flex}.card-action,.edit-lightbox,.delete{text-transform:uppercase;letter-spacing:.06em;text-underline-offset:4px;font-family:DM Mono,monospace;font-size:9px;text-decoration:underline}.card-action.remove,.delete{color:#a34535}.empty-state{border-top:1px solid var(--line);text-align:center;padding:80px 0}.empty-state h3{letter-spacing:-.04em;margin:0 0 10px;font-size:30px;font-weight:400}.empty-help{color:var(--muted);margin:0 0 18px}.login-page{grid-template-columns:1.18fr 1fr;min-height:100vh;display:grid}.login-image{background:linear-gradient(135deg,#d7dfd2,#aeb9aa 48%,#6f7d70)}.login-panel{flex-direction:column;justify-content:center;padding:10vh 10vw;display:flex}.login-panel h1{margin:47px 0 55px;font-size:clamp(45px,5vw,70px)}.login-panel form{max-width:360px}.login-panel label,.modal label{margin:0 0 20px;font-size:12px;display:block}.login-panel input,.modal input{width:100%;color:var(--ink);background:0 0;border:0;border-bottom:1px solid #b8bcb3;outline:none;padding:11px 0;display:block}.login-panel input:focus,.modal input:focus{border-color:var(--ink)}.login-note{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-top:22px;font-family:DM Mono,monospace;font-size:9px}.error{color:#a34535;font-size:12px}.modal-backdrop{z-index:4;background:#1d211e6b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--paper);width:min(560px,100%);padding:42px;position:relative}.modal h2{letter-spacing:-.04em;margin:0 0 12px;font-size:36px;font-weight:400}.modal-copy{color:var(--muted);margin:0 0 30px;line-height:1.5}.close,.lightbox-close{font-size:22px;position:absolute;top:20px;right:25px}.hint{color:var(--muted);text-transform:uppercase;font-family:DM Mono,monospace;font-size:9px}.file-row{grid-template-columns:1fr 1fr;gap:12px;margin:29px 0;display:grid}.file-label{color:var(--muted);margin-bottom:9px;display:block}.file-button{border:1px solid var(--line);text-align:left;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:14px 11px;font-size:11px;overflow:hidden}.lightbox{z-index:5;color:#fff;background:#1c211e;grid-template-rows:minmax(0,1fr) auto;grid-template-columns:80px minmax(0,1fr) 80px;align-items:center;display:grid;position:fixed;inset:0}.lightbox-close{color:#fff;text-transform:uppercase;letter-spacing:.08em;font-family:DM Mono,monospace;font-size:12px}.lightbox-image{justify-content:center;align-items:center;height:calc(100vh - 150px);display:flex}.lightbox-image img{object-fit:contain;max-width:100%;max-height:100%}.arrow{color:#aeb8ad;font-size:28px}.arrow:disabled{opacity:.2;cursor:default}.lightbox-caption{border-top:1px solid #444a44;grid-column:2;justify-content:space-between;align-items:end;padding:20px 0 25px;display:flex}.lightbox-caption h2{margin:0 0 8px;font-size:24px;font-weight:400}.lightbox-caption p{color:#aeb8ad;margin:0}.lightbox-actions{color:#aeb8ad;align-items:center;gap:28px;font-family:DM Mono,monospace;font-size:10px;display:flex}.edit-lightbox{color:#c8d4c3}.delete{color:#d69b8d;text-decoration:none}@media (width<=700px){.topbar{height:68px;padding:0 22px}.wordmark{letter-spacing:.1em;font-size:11px}.topbar-right{gap:12px}.role{display:none}.topbar .button{padding:10px 9px;font-size:11px}.intro{padding:75px 22px 66px}.intro-copy{margin:28px 0 0 12%;font-size:14px}.library-head{align-items:start;gap:15px;padding:21px 22px 16px}.folder-status{text-align:right;font-size:11px}.content-grid{padding:0 22px 60px;display:block}.filters{gap:19px;padding:0 0 25px;display:flex;overflow:auto}.filters .eyebrow{display:none}.filter{flex:none;gap:6px;width:auto;padding:0;font-size:12px}.filter.active:before{display:none}.photo-grid{grid-template-columns:1fr;gap:32px}.photo-frame{aspect-ratio:1.25}.photo-meta{display:block}.card-actions{margin-top:12px}.login-page{display:block}.login-image{height:34vh;min-height:220px}.login-panel{padding:48px 28px}.login-panel h1{margin:39px 0 42px}.modal{padding:32px 24px}.file-row{grid-template-columns:1fr;gap:16px}.lightbox{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:42px minmax(0,1fr) 42px}.lightbox-image{height:calc(100vh - 190px)}.lightbox-caption{grid-column:1/4;align-items:start;padding:16px 20px 22px}.lightbox-caption h2{font-size:19px}.lightbox-actions{flex-direction:column;align-items:end;gap:15px}.lightbox-close{top:16px;right:18px}.arrow{font-size:22px}}.boot-screen{min-height:100vh;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;place-items:center;font-family:DM Mono,monospace;font-size:11px;display:grid}.storage-status{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-family:DM Mono,monospace;font-size:10px}.storage-status.warning{color:#a34535}.archive-error{color:#a34535;max-width:1160px;margin:-4px auto 22px;padding:0 5vw;font-size:12px}.shot-info{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;flex-wrap:wrap;gap:7px 12px;margin-top:8px;font-family:DM Mono,monospace;font-size:9px;display:flex}.shot-info span+span:before{content:"·";color:#a7aca4;margin-right:12px}.shot-info.muted{color:#9a9e97;display:block}.shot-info.detailed{gap:8px 14px;max-width:560px;margin-top:16px;font-size:10px}.tag-picker{border:1px solid var(--line);margin:-8px 0 25px;padding:12px}.tag-chips,.tag-options{flex-wrap:wrap;gap:7px;display:flex}.tag-options{margin-top:10px}.tag-chip{border:1px solid var(--line);letter-spacing:.04em;text-transform:uppercase;padding:7px 9px;font-family:DM Mono,monospace;font-size:9px}.tag-chip:hover{border-color:var(--ink)}.tag-chip.selected{background:var(--ink);border-color:var(--ink);color:#fff}.tag-create{border-top:1px solid var(--line);align-items:center;gap:12px;margin-top:12px;padding-top:10px;display:flex}.tag-create input{border:0!important;padding:7px 0!important}.tag-create .text-button{white-space:nowrap}.username{letter-spacing:.08em;text-transform:uppercase;color:var(--ink);font-family:DM Mono,monospace;font-size:10px}.photo-frame img,.lightbox-image img{filter:none!important}.filter{letter-spacing:.08em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:10px}.modal-backdrop{overflow-y:auto}.modal{overscroll-behavior:contain;max-height:calc(100vh - 40px);overflow-y:auto}@media (width<=700px){.modal{max-height:calc(100vh - 24px)}}.intro{grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);align-items:end;column-gap:40px;max-width:1500px;display:grid}.intro>.eyebrow{grid-column:1/-1}.intro h1{grid-area:2/1}.intro-copy{grid-area:2/2;place-self:end start;max-width:340px;margin:0 0 5px}@media (width<=700px){.intro{max-width:none;display:block}.intro-copy{max-width:340px;margin:28px 0 0 12%}}.batch-summary{border-top:1px solid var(--line);margin:0 0 25px;padding-top:12px}.batch-summary .file-label{margin-bottom:7px}.batch-summary p{color:var(--muted);margin:0;font-size:11px;line-height:1.5}.batch-summary p span{color:var(--ink);font-family:DM Mono,monospace;font-size:10px}.modal input[type=file][hidden]{display:none!important}.file-picker{cursor:pointer;display:block}.batch-file-list{flex-direction:column;gap:12px;display:flex}.batch-file-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 18px;align-items:end;gap:12px;display:grid}.batch-row-remove{color:var(--muted);padding:0 0 13px;font-size:20px;line-height:1}.batch-row-remove:hover{color:var(--ink)}.add-pair{color:var(--ink);letter-spacing:.08em;text-transform:uppercase;text-underline-offset:4px;margin:15px 0 25px;font-family:DM Mono,monospace;font-size:10px;text-decoration:underline;display:block}@media (width<=700px){.batch-file-row{grid-template-columns:1fr 1fr 18px;gap:8px}.batch-row-remove{padding-bottom:12px}}.batch-file-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 48px}.batch-row-actions{align-self:center;align-items:center;gap:6px;padding-bottom:0;display:flex}.batch-row-add{border:2px solid var(--ink);background:var(--ink);color:#fff;width:44px;height:44px;font-size:30px;line-height:1}.batch-row-add:hover{background:#303632;border-color:#303632}.batch-row-remove{width:16px;height:44px;color:var(--muted);font-size:12px;line-height:1;padding:0!important}
