@font-face{font-family:MiSans;src:url('./assets/misans-medium.woff2');font-display:block}@font-face{font-family:XiHuan;src:url('./assets/xihuanti.woff2');font-display:block}@font-face{font-family:Anton;src:url('./assets/anton.woff2');font-display:block}
:root{--ink:#293e4c;--muted:#7c96a7;--line:#bfd3e1;--paper:#e5f0f8;--accent:#456e89}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:#282623;font-family:MiSans,'Microsoft YaHei',sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}button:disabled{cursor:default;opacity:.35}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid #6c9ab8;outline-offset:5px}a{color:inherit}svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}[hidden]{display:none!important}
.masthead{max-width:1100px;margin:auto;padding:27px 40px 20px;min-height:100px;display:flex;align-items:center;animation:header-in .8s both}.wordmark{display:block;line-height:0;transition:transform .3s}.wordmark:hover{transform:translateY(-3px)}.wordmark img{width:176px;height:auto}.album{padding:25px 0 25px;overflow:hidden}.album h1{margin:0 auto 28px;width:190px;line-height:0;animation:header-in 1s .1s both}.album h1 img{width:100%;height:auto}.album-track{position:relative;display:flex;align-items:center;gap:38px;overflow-x:auto;scrollbar-width:none;padding:34px max(38px,calc((100% - 1040px)/2)) 50px;cursor:grab;touch-action:pan-x pan-y;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;user-select:none;perspective:1400px}.album-track::-webkit-scrollbar{display:none}.album-track.dragging{cursor:grabbing}.album-page{--rx:0deg;--ry:0deg;--lift:0px;flex:0 0 298px;padding:0;background:#fff;box-shadow:0 8px 22px #2a25151b;line-height:0;position:relative;transform:perspective(1000px) rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(calc(var(--rest-angle) + var(--drag-lean,0deg))) translateY(var(--lift));transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s;transform-style:preserve-3d;backface-visibility:hidden}.album-page img{display:block;width:100%;height:447px;object-fit:cover;pointer-events:none;-webkit-user-drag:none;animation:poster-in 1s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--index)*.1s + .12s)}.album-track.dragging .album-page{--lift:-5px;transition:transform .16s,box-shadow .25s;box-shadow:0 20px 30px #2a251526}
.workspace{background:var(--paper);color:var(--ink);padding:85px 40px 105px}.editor-grid{max-width:1000px;margin:auto;display:grid;grid-template-columns:minmax(280px,350px) minmax(320px,450px);gap:100px;align-items:start}.controls{padding:0}.control-group{padding:27px 0;border-top:1px solid var(--line)}.control-group:first-child{padding-top:0;border-top:0}.control-group>label:not(.upload),.preview h2{font-family:XiHuan,'KaiTi',serif;font-size:29px;font-weight:600;line-height:1.3;margin:0 0 17px;display:block}.control-group>label.english-label{font-family:MiSans,sans-serif;font-size:15px;font-weight:500;margin:21px 0 10px;color:#668297}input[type=text]{font-family:MiSans,sans-serif;display:block;width:100%;border:1px solid #b6cedf;background:#f8fcff;padding:13px 15px;border-radius:4px;font-size:22px;transition:border-color .25s,box-shadow .25s,background .25s}input[type=text]:focus{border-color:#6d9fbd;background:#fff;box-shadow:0 3px 13px #678da91a}#director-en{font-family:Anton,sans-serif;font-size:22px}.upload{border:1px dashed #a2bfd3;min-height:125px;position:relative;border-radius:4px;background:#f3f9fd;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;cursor:pointer;transition:background .3s,border-color .3s,transform .3s,box-shadow .3s}.upload svg{width:28px;height:28px;color:#7097b1;transition:transform .35s}.upload span{font-family:XiHuan,serif;font-size:25px}.upload input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload.over{border-color:#527c98;background:#fff;transform:translateY(-3px);box-shadow:0 7px 20px #5a8da51a}.zoom-row{display:flex;justify-content:space-between;margin:20px 0 12px;font-family:XiHuan,serif;font-size:20px;color:#648297}.zoom-row output{font-family:MiSans,sans-serif;font-size:13px}input[type=range]{width:100%;height:4px;accent-color:var(--accent)}.photo-tools{display:flex;justify-content:flex-end;margin-top:10px}.photo-tools button{font-family:XiHuan,serif;font-size:20px;color:#648297;padding:2px 0;transition:color .25s}.primary{display:block;width:100%;font-family:XiHuan,serif;font-size:27px;line-height:1.4;background:var(--accent);color:#f5fbff;border:1px solid #456e89;border-radius:5px;padding:14px;transition:transform .25s,box-shadow .25s,background .25s}.primary:not(:disabled):hover{background:#345b75;transform:translateY(-3px);box-shadow:0 9px 20px #41678425}.primary:active{transform:translateY(0)}.reset{display:block;margin:15px auto 0;font-family:XiHuan,serif;font-size:20px;color:#6b879b;transition:color .25s}.status{margin:12px 0 0;text-align:center;font-size:12px;color:#658299;line-height:1.6}.status:empty{display:none}.preview-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.preview h2{margin:0}.preview-top button{padding:5px;color:#6f90a8;line-height:0;transition:transform .3s}.preview-top button:not(:disabled):hover{transform:scale(1.18)}.preview-top svg{width:17px;height:17px}.poster-wrap{position:relative;box-shadow:0 12px 35px #31597413;line-height:0;overflow:hidden;background:#eff7fc}#poster{width:100%;height:auto;display:block;pointer-events:none}.empty-photo{width:100%;aspect-ratio:2/3;display:grid;place-items:center;background:#eff7fc;color:#8eafc6;transition:background .4s,box-shadow .4s}.empty-photo svg{width:39px;height:39px;stroke-width:1;transition:transform .5s cubic-bezier(.2,.8,.2,1),color .3s}.empty-photo:hover{background:#f9fcff;box-shadow:inset 0 0 0 1px #b7d0e1}.empty-photo:hover svg{transform:rotate(90deg) scale(1.15);color:#456e89}.photo-area{position:absolute;inset:0 0 41.8%;cursor:grab;touch-action:none;outline-offset:2px}.photo-area.dragging{cursor:grabbing}.photo-area:focus-visible{outline:2px solid #6b98b6}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#e5f0f8;font-family:XiHuan,serif;font-size:25px}.save-dialog{padding:18px;width:min(600px,calc(100vw - 24px));max-height:94dvh;border:1px solid #b1cadc;border-radius:5px;background:#f1f8fd;color:var(--ink)}.save-dialog::backdrop{background:#233b4a99;backdrop-filter:blur(5px)}.save-dialog[open]{animation:dialog-in .3s cubic-bezier(.2,.8,.2,1)}.save-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;font-family:XiHuan,serif;font-size:25px}.save-header button{font-family:MiSans,sans-serif;font-size:13px;padding:7px}#save-image{display:block;width:100%;height:auto;margin-bottom:17px;-webkit-touch-callout:default;user-select:auto}.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s,transform .8s cubic-bezier(.2,.8,.2,1)}.reveal.in-view{opacity:1;transform:none}.photo-enter #poster{animation:photo-in .65s cubic-bezier(.2,.8,.2,1) both}
@keyframes header-in{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}@keyframes poster-in{from{opacity:0;transform:translateY(35px) scale(.97);filter:blur(4px)}to{opacity:1;transform:none;filter:blur(0)}}@keyframes photo-in{from{opacity:.15;transform:scale(1.04);filter:blur(5px)}to{opacity:1;transform:scale(1);filter:blur(0)}}@keyframes dialog-in{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
@media(hover:hover){.album-page:hover{--lift:-12px;box-shadow:0 24px 34px #2a25152b}.upload:hover{background:#fff;border-color:#709dbb;transform:translateY(-2px)}.upload:hover svg{transform:translateY(-5px)}}
@media(max-width:1050px){.editor-grid{gap:60px}.album-page{flex-basis:270px}.album-page img{height:405px}.album-track{padding-left:55px;padding-right:55px;gap:30px}}
@media(max-width:760px){.masthead{padding:22px 25px 15px;min-height:78px}.wordmark img{width:145px}.album{padding:26px 0 8px}.album h1{width:155px;margin-bottom:16px}.album-track{gap:25px;padding:25px 33px 43px}.album-page{flex-basis:62vw}.album-page img{height:93vw}.workspace{padding:43px 25px 65px}.editor-grid{display:flex;flex-direction:column;max-width:480px;gap:42px}.preview{order:0;width:100%}.controls{order:1;width:100%}.control-group{padding:25px 0}.control-group>label:not(.upload),.preview h2{font-size:27px}.upload{min-height:115px}.save-header{font-size:24px}.save-dialog{padding:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}.album-page{transform:rotateZ(var(--rest-angle))}}
/* Landscape stills and original review images share the same unbroken film strip. */
.album-page.album-photo{flex-basis:550px;padding:10px 10px 22px;box-shadow:0 9px 26px #2a251520}.album-page.album-photo img{height:298px;object-fit:contain;background:#fff}
@media(max-width:1050px){.album-page.album-photo{flex-basis:500px}.album-page.album-photo img{height:270px}}
@media(max-width:760px){.album-page.album-photo{flex-basis:88vw;padding:7px 7px 16px}.album-page.album-photo img{height:calc((88vw - 14px)*.5625)}}
