:root{--ink:#12322f;--forest:#294f3e;--cream:#f5f0e6;--paper:#fffdf8;--line:#ddd4c5;--coral:#e96f45}.gallery-page{margin:0;background:var(--cream);color:var(--ink)}.gallery-page>main{max-width:1300px;margin:auto;padding:35px 24px}.gallery-head{display:flex;align-items:end;justify-content:space-between;padding-bottom:25px;border-bottom:1px solid var(--line)}.gallery-head h1{font:50px Georgia;margin:8px 0}.gallery-head a{color:var(--ink)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;padding-top:24px}.gallery-tile{position:relative;display:grid;grid-template-rows:220px auto;width:100%;padding:0;background:var(--paper);border:1px solid var(--line);text-align:left;overflow:hidden;cursor:pointer}.gallery-tile img{display:block;width:100%;height:220px;object-fit:cover;background:#13201b}.video-placeholder{display:grid;place-items:center;height:220px;background:linear-gradient(145deg,#162a24,#091612);color:#fff;font-size:40px}.gallery-tile footer{display:grid;padding:13px}.gallery-tile footer small{color:#6b756f;margin-top:4px}.badge,.play{position:absolute;top:10px;color:#fff;background:#172c24dd;padding:6px 9px;border-radius:20px;font-size:12px}.badge{right:10px}.play{left:10px}.notice{background:#dcead9;padding:12px}.error{background:#ffe9e3;color:#842d1b;padding:12px}dialog{border:0;padding:0;background:var(--paper);box-shadow:0 30px 90px #0008}#upload-dialog{width:min(540px,calc(100% - 25px))}#upload-dialog form{padding:28px;display:grid;gap:16px}dialog header{display:flex;justify-content:space-between;align-items:center}dialog header h2{font:30px Georgia}dialog header button{cursor:pointer}.checkline{display:flex!important;grid-template-columns:auto 1fr;align-items:center}.checkline input{width:auto!important}.upload-progress{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.upload-progress>div{height:10px;background:#deded8;border-radius:20px;overflow:hidden}.upload-progress span{display:block;width:0;height:100%;background:var(--coral);transition:width .2s}.upload-progress small{grid-column:1/-1;color:#667}#viewer{width:min(1180px,96vw);height:min(820px,92vh);max-width:none;max-height:none;border-radius:12px;background:#0e1110;color:#fff;overflow:hidden}#viewer::backdrop{background:#06100dda;backdrop-filter:blur(5px)}#viewer>header{min-height:58px;padding:12px 16px;border-bottom:1px solid #ffffff20;background:#171b19;gap:15px}#viewer>header>div:first-child{display:grid;gap:3px}#viewer-kind{color:#aeb8b3;font-size:12px}.viewer-tools{display:flex;align-items:center;gap:7px}.viewer-tools button{height:38px;min-width:42px;padding:0 12px;border:1px solid #ffffff35;border-radius:7px;background:#242a27;color:#fff;font:inherit}.viewer-tools button:hover{background:#35403b}.viewer-tools .viewer-close{font-size:24px;margin-left:5px}#viewer-stage{position:relative;height:calc(100% - 112px);display:flex;align-items:center;justify-content:center;overflow:hidden;background:#080a09}#viewer-stage.zoomed{overflow:auto;align-items:flex-start;justify-content:flex-start}#viewer-stage img,#viewer-stage video{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;transform-origin:center center}#viewer-stage canvas{display:block;width:100%;height:100%;touch-action:none}.viewer-loading{color:#aab2ae}.viewer-error{position:absolute;z-index:3;max-width:520px;padding:16px;background:#6d241f;color:#fff;border-radius:7px;text-align:center}#viewer>footer{height:30px;padding:10px 16px;color:#c6ceca;background:#171b19;font-size:12px}.gallery-empty{padding:80px 20px;font:27px Georgia}@media(max-width:650px){.gallery-page>main{padding:22px 14px}.gallery-head{align-items:flex-start;gap:18px}.gallery-head h1{font-size:38px}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.gallery-tile{grid-template-rows:150px auto}.gallery-tile img,.video-placeholder{height:150px}.gallery-tile footer small{display:none}#viewer{width:100vw;height:100vh;border-radius:0}#viewer>header{align-items:flex-start}.viewer-tools button{min-width:38px;padding:0 8px}#viewer-stage{height:calc(100% - 122px)}}
