@font-face{font-family:Shadow;src:url('display.ttf') format('truetype');font-weight:800;font-display:swap}
.icon img{filter:invert(1);opacity:.85}.icon.loved img{filter:invert(60%) sepia(65%) saturate(600%) hue-rotate(305deg)}.icon.danger img{filter:invert(65%) sepia(45%) saturate(680%) hue-rotate(305deg)}
@media(min-width:621px){dialog#viewer{width:min(calc(100% - 48px),calc(76dvh * var(--photo-ratio,1) + 326px))}}
body:has(dialog[open]){overflow:hidden}
:root{color-scheme:dark;--bg:#101010;--surface:#191919;--line:#383838;--muted:#aaa5a5;--ink:#f1eded;--red:#c84951;--serif:Shadow,Georgia,serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 Arial,Helvetica,sans-serif;letter-spacing:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #f2999f;outline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:800;line-height:1.15;overflow-wrap:anywhere}h1{font-size:36px}h2{font-size:26px}h3{font-size:21px}p{color:var(--muted)}small{font-size:12px}.masthead{max-width:1440px;margin:auto;padding:25px 36px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;font-family:var(--serif);font-size:21px;line-height:1.1}.brand img{object-fit:contain}.brand small{display:block;margin-top:7px;font:11px Arial,sans-serif;color:var(--muted)}nav{display:flex;gap:10px;align-items:center}nav span{font-size:13px;color:var(--muted)}#app{max-width:1368px;min-height:70vh;margin:auto;padding:44px 32px 64px}footer{max-width:1304px;margin:auto;padding:22px 0 30px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;color:#918b8b;font-size:12px}.loading,.empty{padding:70px 0;text-align:center}.empty h2{margin-bottom:12px}.auth{max-width:400px;margin:5vh auto 8vh}.auth .seal{width:94px;height:94px;display:block;margin:0 auto 32px}.auth h1{text-align:center;font-size:32px}.auth>p{text-align:center;margin:15px 0 30px}.stack{display:grid;gap:20px}label{display:grid;gap:7px;color:#d4cece;font-size:13px}input,textarea,select{width:100%;min-width:0;background:#101010;color:var(--ink);border:1px solid #555050;border-radius:3px;padding:11px 12px}textarea{min-height:110px;resize:vertical}input::placeholder,textarea::placeholder{color:#8a8484}button{border:1px solid var(--line);background:transparent;color:var(--ink);padding:9px 15px;border-radius:3px;transition:background .18s,border-color .18s,transform .18s}button:hover{background:#292424;border-color:#817373}button:active{transform:translateY(1px)}.primary{background:#982832;border-color:#b43a44;color:white}.primary:hover{background:#b43843;border-color:#ce515b}.danger{color:#ffa5ab;border-color:#8d3b42}.quiet{border-color:transparent;color:var(--muted)}.error{color:#ffafb5;font-size:13px;min-height:0}.topline{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:30px}.topline h1{margin-top:8px}.topline p{margin-top:10px;max-width:680px;white-space:pre-wrap}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.eyebrow{color:var(--muted);font-size:12px}.back{padding-left:0;border:0;font-size:13px;margin-bottom:15px}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin:0 0 32px}.tabs button{border:0;border-radius:0;border-bottom:2px solid transparent;padding:12px 0;color:var(--muted)}.tabs button[aria-selected=true]{border-color:var(--red);color:white}.gallery-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px}.gallery-entry{border:0;padding:0;text-align:left;background:transparent;display:block;width:100%}.gallery-entry:hover{background:transparent}.cover{aspect-ratio:4/3;overflow:hidden;background:#1d1a1a;display:grid;place-items:center;border:1px solid #353030}.cover img{width:100%;height:100%;object-fit:contain;transition:transform .4s}.gallery-entry:hover img{transform:scale(1.025)}.entry-caption{display:flex;justify-content:space-between;gap:10px;margin-top:15px}.entry-caption p{font-size:13px;margin-top:6px}.pill{align-self:flex-start;color:#d4aaaa;font-size:11px;border:1px solid #614448;padding:3px 7px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0;margin:24px 0}.filters{display:flex;gap:4px}.filters button{font-size:13px;border-color:transparent}.filters button[aria-pressed=true]{background:#302326;color:#ffd5d8;border-color:#73434a}.count{color:var(--muted);font-size:13px}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 24px}.photo{min-width:0}.photo-open{display:block;width:100%;padding:8px;background:#e9e5e2;border:0;border-radius:0;overflow:hidden}.photo-open:hover{background:white}.photo-open img{display:block;width:100%;aspect-ratio:4/5;object-fit:contain;background:#171717}.photo-caption{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px}.photo-caption span{font-size:12px;color:#bdb6b6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{display:inline-flex;width:40px;height:40px;flex:0 0 40px;align-items:center;justify-content:center;padding:9px}.icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.loved{color:#f17d87}.loved svg{fill:#782d38}.photo-caption .icon{border-color:transparent}.client-list{border-top:1px solid var(--line)}.client-row{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:20px 0;border-bottom:1px solid var(--line)}.client-row p{font-size:13px}.client-row strong{font-size:16px}.upload-area{border:1px dashed #665357;padding:20px;margin:20px 0;display:flex;align-items:center;justify-content:space-between;gap:24px}.upload-area p{font-size:13px;margin-top:5px}.upload-area input{max-width:320px;font-size:13px}.upload-progress{width:100%;accent-color:var(--red)}.upload-results{font-size:13px;color:#ffc1c5;white-space:pre-wrap}.pending{border-left:2px solid var(--red);padding:16px;margin-bottom:20px}.pending button{margin:8px}.privacy{font-size:12px;color:#a79f9f;max-width:740px;margin:30px 0 0}.hidden,[hidden]{display:none!important}dialog{color:var(--ink);border:1px solid #5e474a;background:#191717;padding:30px;max-width:500px;width:calc(100% - 32px);max-height:90dvh;border-radius:6px;box-shadow:0 25px 100px #000b}dialog::backdrop{background:#000c;backdrop-filter:blur(4px)}dialog[open]{animation:appear .22s ease-out}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}dialog p{font-size:14px;margin-bottom:20px}dialog .actions{justify-content:flex-end;margin-top:4px}dialog code{display:block;padding:14px;background:#0c0c0c;overflow-wrap:anywhere;color:#f5c7cd;user-select:all}#viewer{max-width:1420px;width:calc(100% - 48px);padding:0;background:#131313;border:8px solid #eee9e5;border-radius:0;overflow:auto}.review{display:grid;grid-template-columns:minmax(0,1fr) 310px;min-height:65vh}.image-stage{background:#090909;display:flex;align-items:center;justify-content:center;position:relative;min-height:0}.image-stage img{width:100%;height:76dvh;object-fit:contain}.review-panel{display:flex;flex-direction:column;padding:22px;min-width:0;max-height:76dvh}.review-tools{display:flex;justify-content:space-between;align-items:center;gap:5px;margin-bottom:18px}.review-tools .icon{border:0}.review-panel h2{font:15px Arial,sans-serif;overflow-wrap:anywhere}.review-panel .count{font-size:12px;margin-top:6px}.review-actions{display:flex;gap:8px;margin:16px 0;padding-bottom:15px;border-bottom:1px solid var(--line)}.comments{flex:1;overflow-y:auto;min-height:80px;margin-bottom:18px}.comment{padding:10px 0;border-bottom:1px solid #2e2929}.comment strong{font-size:12px}.comment time{display:block;font-size:10px;color:#9f9494}.comment p{font-size:13px;color:#d1caca;margin:7px 0;white-space:pre-wrap;overflow-wrap:anywhere}.comment-form{display:grid;gap:10px}.comment-form textarea{font-size:13px;min-height:80px;max-height:160px}.comment-form button{justify-self:end;font-size:13px}#notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:20;background:#ece5e5;color:#211719;padding:12px 20px;border-left:3px solid var(--red);box-shadow:0 5px 30px #0008;max-width:calc(100% - 32px);font-size:14px}@keyframes appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(min-width:1600px){.photo-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:900px){.gallery-list,.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.review{grid-template-columns:minmax(0,1fr) 280px}.masthead{padding:20px 24px}footer{margin:0 24px}.topline{align-items:flex-start;flex-direction:column}}@media(max-width:620px){.masthead{padding:17px 16px;gap:10px}.brand{font-size:17px;gap:8px}.brand img{width:36px;height:36px}nav span{display:none}nav{gap:0}nav button{font-size:12px;padding:8px}#app{padding:28px 16px 45px}h1{font-size:28px}.auth{margin:24px auto 50px}.auth h1{font-size:29px}.gallery-list{grid-template-columns:1fr;gap:28px}.photo-grid{gap:20px 12px}.photo-open{padding:5px}.photo-caption{gap:3px}.photo-caption span{font-size:11px}.photo-caption .icon{width:32px;height:36px;flex-basis:32px;padding:6px}.toolbar{gap:8px}.toolbar .count{font-size:11px}.filters button{padding:8px 10px}.client-row{align-items:flex-start;flex-direction:column;gap:12px}.upload-area{align-items:flex-start;flex-direction:column;gap:14px}.upload-area input{max-width:100%}#viewer{width:calc(100% - 16px);border-width:5px;max-height:94dvh}.review{display:flex;flex-direction:column;min-height:0}.image-stage img{height:46dvh}.review-panel{max-height:none;padding:16px}.review-tools{margin-bottom:10px}.comments{max-height:190px;min-height:0;flex:none}.review-actions{margin:12px 0}.comment-form textarea{min-height:70px}dialog{padding:22px}footer{margin:0 16px;font-size:11px;flex-direction:column;gap:4px}.entry-caption h2{font-size:24px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
