:root{--bg:#efede8;--bg-raise:#f7f6f2;--ink:#1c1b18;--ink-soft:#6d6a62;--line:#dcd9d0;--accent:#1c1b18;--dark:#101012;--dark-raise:#1a1a1e;--radius:14px;--shell-w:100vw;color:var(--ink);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Segoe UI,Noto Sans SC,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--dark)}.shell{background:var(--bg);flex-direction:column;width:100%;height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden}@media (width>=520px){:root{--shell-w:430px}.shell{width:min(430px,100vw);box-shadow:0 0 0 1px #26262a,0 24px 80px #0000008c}}.page{-webkit-overflow-scrolling:touch;flex:1;padding:0 20px 48px;overflow:hidden auto}.primary-page{padding-bottom:112px}.wordmark{justify-content:space-between;align-items:baseline;padding:26px 0 6px;transition:opacity .2s;display:flex}.wordmark h1{letter-spacing:.02em;font-size:22px;font-weight:700}.wordmark span{color:var(--ink-soft);letter-spacing:.14em;font-size:11px}.section-label{letter-spacing:.18em;color:var(--ink-soft);text-transform:uppercase;margin:30px 0 12px;font-size:11px}.privacy-note{border-top:1px solid var(--line);color:var(--ink-soft);margin-top:36px;padding-top:16px;font-size:12px;line-height:1.7}.btn{appearance:none;background:var(--accent);color:#f4f3ef;cursor:pointer;border:none;border-radius:999px;width:100%;padding:15px 28px;font-size:15px;font-weight:600;transition:transform .12s,opacity .2s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.35;cursor:default}.btn.quiet{color:var(--ink);border:1px solid var(--line);background:0 0}.icon-btn{appearance:none;color:#e8e6e0;cursor:pointer;background:#1414168c;border:none;border-radius:50%;place-items:center;width:38px;height:38px;font-size:17px;display:grid}.canister{width:88px}.canister-svg{overflow:visible}.primary-nav{z-index:45;left:50%;bottom:max(14px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f8f7f2eb;border:1px solid #2d2a2421;border-radius:999px;grid-template-columns:repeat(2,52px);gap:4px;height:52px;padding:4px;display:grid;position:absolute;transform:translate(-50%);box-shadow:0 12px 32px #1b191529}.primary-nav button{appearance:none;color:#8c887f;cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;transition:background .18s,color .18s,transform .12s;display:grid}.primary-nav button:active{transform:scale(.96)}.primary-nav button.active{color:#f3f1ea;background:#1c1b18}.home-page{background:radial-gradient(circle at 78% 12%, #fff9, transparent 33%), var(--bg)}.film-cabinet{padding-top:8px;position:relative}.eyebrow{color:var(--ink-soft);letter-spacing:.18em;font:600 10px/1 ui-monospace,monospace;display:block}.page-title{padding:calc(18px + env(safe-area-inset-top,0px)) 0 2px;letter-spacing:.01em;font-size:22px;font-weight:700;transition:opacity .2s}.film-cloud{isolation:isolate;grid-template-columns:repeat(3,minmax(0,1fr));place-items:start center;row-gap:6px;margin:10px -4px 0;padding:4px 2px 8px;display:grid;position:relative}.floating-roll{--roll-x:0px;--roll-y:0px;--roll-r:0deg;--retreat-x:0px;--retreat-y:0px;appearance:none;z-index:1;width:104px;min-height:132px;color:var(--ink-soft);cursor:pointer;isolation:isolate;transform-origin:50% 100%;transform:translate3d(var(--roll-x), var(--roll-y), 0) rotate(var(--roll-r));background:0 0;border:0;flex-direction:column;align-items:center;gap:1px;padding:4px 3px;transition:transform .32s cubic-bezier(.22,.85,.28,1),color .2s,opacity .26s;display:flex;position:relative}.floating-roll-1{--roll-x:-5px;--roll-y:10px;--roll-r:-5deg;--retreat-x:-16px;--retreat-y:-12px}.floating-roll-2{--roll-x:0px;--roll-y:-4px;--roll-r:3deg;--retreat-x:0px;--retreat-y:-16px}.floating-roll-3{--roll-x:5px;--roll-y:7px;--roll-r:-3deg;--retreat-x:16px;--retreat-y:-12px}.floating-roll-4{--roll-x:-5px;--roll-y:8px;--roll-r:4deg;--retreat-x:-16px;--retreat-y:14px}.floating-roll-5{--roll-x:1px;--roll-y:-3px;--roll-r:-3deg;--retreat-x:0px;--retreat-y:16px}.floating-roll-6{--roll-x:6px;--roll-y:10px;--roll-r:5deg;--retreat-x:16px;--retreat-y:14px}.film-cloud .canister-svg{width:clamp(86px,27vw,104px);height:auto}.floating-roll:not(.active){opacity:.9}.floating-roll:focus-visible{outline-offset:4px;outline:1px dashed #1c1b1873}.floating-roll:before{content:"";z-index:-1;background:#231f181f;border-radius:50%;height:8px;transition:transform .18s,opacity .18s;position:absolute;bottom:6px;left:19%;right:19%;box-shadow:0 7px 9px 4px #231f1817}.floating-roll:active:before{opacity:.68;transform:translateY(-2px)scale(.86)}.home-preview-open .page-title{opacity:0}.preview-open .floating-roll:not(.active){opacity:.28;pointer-events:none;transform:translate3d(calc(var(--roll-x) + var(--retreat-x)), calc(var(--roll-y) + var(--retreat-y)), 0) rotate(var(--roll-r)) scale(.86);will-change:transform, opacity}.preview-open .floating-roll.active{pointer-events:none;animation:.34s ease-out 80ms both floating-roll-transfer}.is-closing .floating-roll.active{animation:.77s linear both floating-roll-handoff}@keyframes floating-roll-transfer{0%{opacity:1}78%,to{opacity:0}}@keyframes floating-roll-handoff{0%,96%{opacity:0}97%,to{opacity:.9}}.cabinet-preview{--origin-x:0px;--origin-y:0px;--origin-r:0deg;--origin-scale:.76;z-index:60;width:var(--shell-w);height:100dvh;position:fixed;top:0;left:50%;overflow:hidden;transform:translate(-50%)}.preview-backdrop{appearance:none;z-index:0;will-change:opacity;cursor:default;background:#efede8ad;border:0;animation:.3s ease-out both preview-backdrop-in;position:absolute;inset:0}@keyframes preview-backdrop-in{0%{opacity:0}to{opacity:1}}.preview-close{appearance:none;z-index:6;top:max(14px, env(safe-area-inset-top));color:var(--ink-soft);cursor:pointer;background:0 0;border:0;padding:8px;font-size:12px;animation:.28s ease-out .45s both preview-copy-in;position:absolute;right:14px}.preview-close span{padding-right:3px}.preview-assembly{z-index:2;height:184px;position:absolute;top:calc(50% - 105px);left:8px;right:8px}.preview-canister{z-index:4;transform-origin:50%;will-change:transform;backface-visibility:hidden;animation:.68s cubic-bezier(.2,.82,.24,1) both preview-canister-lift;position:absolute;top:0;left:0}.preview-canister [data-layer=shadow]{display:none}.preview-canister .canister-svg>g{filter:none}@keyframes preview-canister-lift{0%{transform:translate3d(var(--origin-x), var(--origin-y), 0) rotate(var(--origin-r)) scale(var(--origin-scale))}58%{transform:translate(126px)rotate(0)scale(1.04)}to{transform:translate(0,0)rotate(-2deg)scale(1)}}.preview-canister .canister-spindle{transform-box:fill-box;transform-origin:50%;animation:.46s ease-in-out .32s both preview-spindle-turn}@keyframes preview-spindle-turn{0%{transform:rotate(0)}34%{transform:rotate(-9deg)}72%{transform:rotate(16deg)}to{transform:rotate(7deg)}}.preview-film-window{z-index:2;height:95px;position:absolute;top:42px;left:86px;right:-2px;overflow:hidden}.preview-film-strip{color:var(--preview-edge);background:var(--preview-base);box-shadow:none;will-change:transform;backface-visibility:hidden;animation:.55s cubic-bezier(.24,.78,.25,1) .46s forwards preview-strip-pull;position:absolute;inset:0;transform:translate(-102%)}@keyframes preview-strip-pull{to{transform:translate(0,0)}}.preview-film-strip:before,.preview-film-strip:after{content:"";z-index:4;pointer-events:none;background:repeating-linear-gradient(90deg, transparent 0 6px, var(--preview-hole) 6px 14px, transparent 14px 21px);height:10px;position:absolute;left:0;right:0}.preview-film-strip:before{top:3px}.preview-film-strip:after{bottom:3px}.preview-strip-scroll{scrollbar-width:none;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;position:absolute;inset:0;overflow:auto hidden}.preview-strip-scroll::-webkit-scrollbar{display:none}.preview-strip-track{gap:6px;width:max-content;min-width:100%;height:100%;padding:15px 20px 15px 16px;display:flex}.preview-frame{background:var(--preview-frame);border:2px solid var(--preview-frame);scroll-snap-align:start;flex:0 0 220px;height:65px;margin:0;position:relative;overflow:hidden}.preview-frame:after{content:"";pointer-events:none;opacity:.2;mix-blend-mode:overlay;background-image:url(/assets/master-label-paper-BazFGeMz.png);position:absolute;inset:0}.preview-frame img{object-fit:cover;width:100%;height:100%;display:block}.preview-frame figcaption{z-index:2;color:var(--preview-edge);text-shadow:0 1px 2px #000;font:700 7px/1 ui-monospace,monospace;position:absolute;bottom:2px;right:3px}.sample-daily200 img{filter:saturate(.98)contrast(1.02)}.sample-warm200 img{filter:sepia(.14)saturate(1.14)contrast(1.04)brightness(1.02)}.sample-night800 img{filter:saturate(.92)contrast(1.16)brightness(.78)hue-rotate(7deg)}.sample-night800 .preview-frame:before{content:"";z-index:2;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 18px #244a7d40,inset 0 0 9px #c9352324}.sample-portrait400 img{filter:sepia(.05)saturate(.92)contrast(.96)brightness(1.03)}.sample-vivid100 img{filter:saturate(1.28)contrast(1.08)}.sample-mono400 img{filter:grayscale()contrast(1.12)}.preview-strip-tail{height:65px;color:var(--preview-edge);letter-spacing:.1em;writing-mode:vertical-rl;flex:0 0 92px;place-items:center;font:700 7px/1.4 ui-monospace,monospace;display:grid}.preview-film-copy{z-index:4;text-align:center;animation:.32s ease-out .76s both preview-copy-in;position:absolute;top:calc(50% + 100px);left:20px;right:20px}@keyframes preview-copy-in{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}.preview-film-copy h3{letter-spacing:.04em;font-size:26px;line-height:1}.preview-film-copy p{color:var(--ink-soft);margin-top:9px;font-size:13px}.cabinet-preview .cabinet-cta{z-index:4;width:auto;animation:.32s ease-out .84s both preview-copy-in;position:absolute;top:calc(50% + 170px);left:28px;right:28px}.cabinet-preview.closing .preview-film-strip{animation:.27s ease-in both preview-strip-retract}@keyframes preview-strip-retract{0%{transform:translate(0,0)}to{transform:translate(-102%)}}.cabinet-preview.closing .preview-canister{animation:.5s linear .27s both preview-canister-return}@keyframes preview-canister-return{0%{animation-timing-function:cubic-bezier(.22,.72,.3,1);transform:translate(0,0)rotate(-2deg)scale(1)}34%{animation-timing-function:cubic-bezier(.42,0,.3,1);transform:translate(126px)rotate(0)scale(1.02)}to{transform:translate3d(var(--origin-x), var(--origin-y), 0) rotate(var(--origin-r)) scale(var(--origin-scale))}}.cabinet-preview.closing .preview-canister .canister-spindle{animation:.28s ease-in-out both preview-spindle-return}@keyframes preview-spindle-return{0%{transform:rotate(7deg)}58%{transform:rotate(-10deg)}to{transform:rotate(0)}}.cabinet-preview.closing .preview-film-copy,.cabinet-preview.closing .preview-close,.cabinet-preview.closing .cabinet-cta{animation:.16s ease-in both preview-copy-out}@keyframes preview-copy-out{to{opacity:0;transform:translateY(6px)}}.cabinet-preview.closing .preview-backdrop{animation:.22s ease-in .55s both preview-backdrop-out}@keyframes preview-backdrop-out{0%{opacity:1}to{opacity:0}}@media (height<=700px){.home-page .page-title{padding-top:16px;padding-bottom:2px}.preview-film-copy{top:calc(50% + 86px)}.cabinet-preview .cabinet-cta{top:calc(50% + 153px)}}@media (prefers-reduced-motion:reduce){.preview-open .floating-roll.active,.preview-backdrop,.preview-close,.preview-canister,.preview-canister .canister-spindle,.preview-film-strip,.preview-film-copy,.cabinet-preview .cabinet-cta{animation-duration:.01ms!important;animation-delay:0s!important}}.works-unfinished{flex-direction:column;margin:0 0 24px;display:flex}.unfinished-row{border-bottom:1px solid var(--line);align-items:center;display:flex}.unfinished-row:last-child{border-bottom:0}.unfinished-open{appearance:none;min-height:52px;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:10px;padding:10px 2px;font-size:14px;font-weight:600;display:flex}.unfinished-open i{border-radius:2px;flex:none;width:10px;height:15px;box-shadow:inset 0 0 0 1px #1c1b181f}.unfinished-open b{color:var(--ink-soft);margin-left:auto;font-size:12px;font-weight:600}.unfinished-delete{appearance:none;width:44px;height:44px;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;display:grid}.works-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 14px;display:grid}.work-card{appearance:none;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:stretch;padding:0;display:flex;position:relative}.work-photos{aspect-ratio:4/5;display:block;position:relative}.work-photo,.work-photo-under{object-fit:cover;border-radius:8px;width:100%;height:100%;position:absolute;inset:0}.work-photo{box-shadow:0 5px 12px #231f1829}.work-photo-under{filter:brightness(.96);transform:rotate(4deg)translate(5px,-5px);box-shadow:0 2px 6px #231f181a}.work-canister{z-index:2;position:absolute;bottom:-12px;left:7px}.work-canister>svg{filter:drop-shadow(0 3px 5px #231f1833);display:block}.work-meta{color:var(--ink-soft);margin-top:19px;font-size:12px}.empty-works{text-align:center;flex-direction:column;align-items:center;padding:72px 0;display:flex}.empty-roll-outline{border:1.5px dashed #1c1b1838;border-radius:4px;width:54px;height:78px;margin:0 0 18px;display:block;transform:rotate(-4deg)}.empty-works h2{color:var(--ink);font-size:15px;font-weight:650}.empty-works-link{appearance:none;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;margin-top:8px;padding:10px;font-size:13px}.page-head{align-items:center;gap:12px;padding:20px 0 8px;display:flex}.page-head .back{color:var(--ink);background:#1c1b180f}.page-head .title{letter-spacing:.03em;font-size:16px;font-weight:700}.sorter-note{color:var(--ink-soft);text-align:center;margin:14px 0 4px;font-size:11px}.dropzone{border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;color:var(--ink-soft);cursor:pointer;background:var(--bg-raise);padding:34px 20px;font-size:14px}.dropzone strong{color:var(--ink);margin-bottom:6px;font-size:15px;display:block}.dropzone .hint{margin-top:8px;font-size:12px}.counter{color:var(--ink-soft);letter-spacing:.08em;justify-content:space-between;margin:18px 0 10px;font-size:12px;display:flex}.thumb-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.thumb-cell{aspect-ratio:1;background:var(--dark);touch-action:none;border-radius:8px;position:relative;overflow:hidden}.thumb-cell img{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block}.thumb-cell .num{color:#f2efe4;background:#0a0a0a8c;border-radius:4px;padding:1px 5px;font-family:ui-monospace,monospace;font-size:10px;position:absolute;bottom:5px;left:6px}.thumb-cell .rm{color:#fff;cursor:pointer;background:#0a0a0a99;border:none;border-radius:50%;width:22px;height:22px;font-size:12px;position:absolute;top:4px;right:4px}.thumb-cell.dragging{outline:2px solid var(--ink);opacity:.85;z-index:5}.thumb-add{aspect-ratio:1;border:1.5px dashed var(--line);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:8px;font-size:22px}.progress-line{background:var(--line);border-radius:2px;height:3px;margin:14px 0 4px;overflow:hidden}.progress-line i{background:var(--ink);height:100%;transition:width .25s;display:block}.sticky-cta{background:linear-gradient(transparent, var(--bg) 40%);padding:18px 0 4px;position:sticky;bottom:0}.develop-stage{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:26px;padding:30px 0;display:flex}.stage-hint{color:var(--ink-soft);text-align:center;font-size:13px;line-height:1.8}.canister-stage{cursor:pointer;transition:transform .15s}.canister-stage:active{transform:scale(.98)}.canister-stage.static{cursor:default}.canister-stage.sealing .canister-svg{transform-box:fill-box;transform-origin:50%;animation:1.5s cubic-bezier(.45,.1,.35,.95) canister-seal}.canister-stage.sealing .canister-spindle{transform-box:fill-box;transform-origin:50%;animation:1.35s cubic-bezier(.3,.12,.45,1) spindle-turn}@keyframes canister-seal{0%{transform:rotate(0)translateY(-3px)}16%{transform:rotate(.9deg)translateY(1px)}38%{transform:rotate(-.6deg)translateY(0)}72%{transform:rotate(.35deg)translateY(0)}to{transform:rotate(0)translateY(0)}}@keyframes spindle-turn{0%{transform:rotate(0)}12%{transform:rotate(38deg)}78%{transform:rotate(238deg)}to{transform:rotate(270deg)}}.sealed-roll,.developed-roll{place-items:center;min-height:230px;display:grid;position:relative}.sealed-count{letter-spacing:.18em;color:var(--ink-soft);font:700 9px/1 ui-monospace,monospace;position:absolute;bottom:0}.developed-stamp{border:1px solid color-mix(in srgb, var(--ink) 42%, transparent);color:var(--ink-soft);letter-spacing:.14em;padding:5px 7px 4px;font:700 8px/1 ui-monospace,monospace;position:absolute;top:48%;right:-42px;transform:rotate(-7deg)}.developed-roll-button{appearance:none;color:inherit;cursor:pointer;background:0 0;border:0;width:210px}.developed-roll-button:active .canister-stage{transform:scale(.97)}.cta-col{flex-direction:column;align-items:center;gap:12px;width:100%;display:flex}.developing{flex-direction:column;align-items:center;gap:18px;width:100%;display:flex}.dev-workbench{filter:drop-shadow(0 13px 14px #12110f33);place-items:end center;width:250px;height:210px;display:grid;position:relative}.dev-canister{z-index:1;opacity:1;animation:.72s cubic-bezier(.55,.05,.35,1) forwards dev-load-canister;position:absolute;top:8px;left:44px;transform:rotate(-8deg)}@keyframes dev-load-canister{0%,18%{opacity:1;transform:translate(0)rotate(-8deg)scale(1)}to{opacity:0;transform:translate(53px,88px)rotate(4deg)scale(.62)}}.dev-tank{z-index:2;transform-origin:50% 88%;background:linear-gradient(90deg,#0c0d0f 0%,#292b2e 22%,#17181b 58%,#050607 100%);border-radius:12px 12px 22px 22px;width:112px;height:142px;margin-bottom:5px;position:relative;box-shadow:inset 9px 0 13px #ffffff0a,inset -10px 0 18px #0000008c}.step-develop .dev-tank,.step-fix .dev-tank{animation:.82s ease-in-out infinite dev-agitate}.step-wash .dev-tank{animation:.55s ease-out both dev-settle}@keyframes dev-agitate{0%,to{transform:rotate(-5deg)translateY(0)}50%{transform:rotate(5deg)translateY(-3px)}}@keyframes dev-settle{0%{transform:rotate(3deg)}to{transform:rotate(0)}}.dev-tank-lid{background:linear-gradient(#313338,#0c0d0f);border-radius:6px 6px 4px 4px;height:20px;animation:.72s cubic-bezier(.45,0,.28,1) .2s forwards dev-close-lid;position:absolute;top:-11px;left:-7px;right:-7px;transform:translateY(-34px);box-shadow:0 2px #050506}@keyframes dev-close-lid{to{transform:translateY(0)}}.dev-tank-ridge{background:#ffffff1a;height:2px;position:absolute;left:7px;right:7px}.dev-tank-ridge.one{top:25px}.dev-tank-ridge.two{bottom:19px}.dev-tank-glow{opacity:0;background:radial-gradient(circle at 45% 60%,#b2824438,#0000 68%);border-radius:40%;transition:opacity .4s,background .5s;position:absolute;inset:30px 16px 25px}.step-develop .dev-tank-glow{opacity:1}.step-fix .dev-tank-glow{opacity:.8;background:radial-gradient(circle at 45% 60%,#667e663d,#0000 68%)}.step-wash .dev-tank-glow{opacity:.55;background:radial-gradient(circle at 45% 60%,#6f9db440,#0000 68%)}.dev-water-line{background:linear-gradient(#9dc4cf29,#6092a44d);border-radius:0 0 13px 13px;height:0;transition:height .7s;position:absolute;bottom:18px;left:12px;right:12px}.step-wash .dev-water-line{height:82px}.dev-drop{z-index:3;opacity:0;background:#8db8c2;border-radius:60% 40%;width:5px;height:10px;position:absolute;top:38px}.dev-drop.one{left:78px}.dev-drop.two{right:76px;animation-delay:.22s!important}.step-wash .dev-drop{animation:.9s ease-in infinite dev-drip}@keyframes dev-drip{0%{opacity:0;transform:translateY(0)scale(.7)}25%{opacity:.75}to{opacity:0;transform:translateY(86px)scale(1)}}.dev-phases{color:#aaa69c;letter-spacing:.08em;align-items:center;gap:7px;font-size:11px;display:flex}.dev-phases i{background:var(--line);width:16px;height:1px}.dev-phases span{opacity:.48;transition:color .25s,opacity .25s}.dev-phases span.active{color:var(--ink);opacity:1;font-weight:700}.dev-phases span.done{color:#526c58;opacity:.8}.dev-label{letter-spacing:.28em;min-height:15px;color:var(--ink-soft);font-size:10px}.lightbox{color:var(--ink);z-index:10;background:#f5f3ed;flex-direction:column;display:flex;position:absolute;inset:0}.lightbox .top{z-index:30;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:12px 14px;display:grid;position:absolute;top:0;left:0;right:0}.lightbox .top>.icon-btn{justify-self:start}.lightbox .top .top-action{justify-self:end}.viewer-center{align-items:center;gap:8px;min-width:0;display:flex}.scan-badge{color:#666157;letter-spacing:.08em;background:#1f1d191f;border-radius:999px;flex:none;padding:4px 8px;font:600 10px/1 ui-monospace,monospace}.rollup-btn{appearance:none;background:var(--dark);color:#f5f3ed;letter-spacing:.06em;cursor:pointer;border:0;border-radius:999px;height:38px;padding:0 16px;font-size:13px;font-weight:650}.lightbox .bottom{z-index:30;justify-content:space-between;align-items:center;padding:14px;display:flex;position:absolute;bottom:0;left:0;right:0}.lightbox .icon-btn{color:var(--ink);background:#1c1b1812;width:44px;height:44px}.lightbox-toggle{appearance:none;width:44px;height:44px;color:var(--ink-soft);cursor:pointer;background:#1c1b180f;border:0;border-radius:50%;place-items:center;display:grid}.lightbox-toggle.on{background:var(--dark);color:#f5f3ed}.lightbox-toggle.hint-pulse{animation:1.4s ease-out 2 toggle-pulse}@keyframes toggle-pulse{0%{box-shadow:0 0 #1f1d1973}70%{box-shadow:0 0 0 12px #1f1d1900}to{box-shadow:0 0 #1f1d1900}}.viewer-menu{z-index:40;background:#1c1b18;border-radius:12px;flex-direction:column;min-width:168px;padding:5px;display:flex;position:absolute;bottom:72px;left:14px;box-shadow:0 10px 26px #00000047}.viewer-menu button{appearance:none;color:#f3f1ea;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:11px 12px;font-size:13px}.viewer-menu button.danger{color:#e8a79b}.film-viewer .top,.film-viewer .bottom,.film-viewer .counter-chip{transition:opacity .24s}.film-viewer.is-scrolling .top,.film-viewer.is-scrolling .bottom,.film-viewer.is-scrolling .counter-chip{opacity:.15}.film-viewer.rolling{pointer-events:none}.film-viewer.rolling .top,.film-viewer.rolling .bottom,.film-viewer.rolling .counter-chip{opacity:0;transition:opacity .22s}.film-viewer.rolling .film-frames{animation:.5s ease-in .16s both film-retract}@keyframes film-retract{0%{clip-path:inset(-2% 0 0);transform:translateY(0)}to{clip-path:inset(-2% 0 101%);transform:translateY(-26px)}}.film-viewer.rolling .overview-canister .canister-spindle{transform-box:fill-box;transform-origin:50%;animation:.5s ease-in-out .16s spindle-wind}@keyframes spindle-wind{0%{transform:rotate(0)}32%{transform:rotate(9deg)}66%{transform:rotate(-7deg)}to{transform:rotate(0)}}.film-viewer.rolling .overview-canister{animation:.45s ease-in-out .6s both canister-stand}@keyframes canister-stand{0%{top:var(--canister-top,34px);transform:translate(-50%)rotate(90deg)scale(1)}55%{transform:translate(-50%)rotate(112deg)scale(1.03)}to{top:calc(var(--canister-top,34px) + 40px);transform:translate(-50%)rotate(0)scale(.86)}}.sealed-end{z-index:30;text-align:center;background:#f8f5ec;flex-direction:column;justify-content:center;align-items:center;animation:.3s ease-out both sealed-end-in;display:flex;position:absolute;inset:0}@keyframes sealed-end-in{0%{opacity:0}to{opacity:1}}.sealed-end p{color:var(--ink);margin:18px 0 26px;font-size:15px;font-weight:650}.sealed-end-actions{flex-direction:column;gap:10px;width:min(260px,76%);display:flex}@media (prefers-reduced-motion:reduce){.film-viewer.rolling .film-frames,.film-viewer.rolling .overview-canister,.film-viewer.rolling .overview-canister .canister-spindle{animation-duration:.01ms!important;animation-delay:0s!important}}.lightbox .counter-chip{letter-spacing:.2em;color:var(--ink-soft);z-index:30;font-family:ui-monospace,monospace;font-size:11px;position:absolute;bottom:66px;left:50%;transform:translate(-50%)}.strip-scroller{scroll-snap-type:x mandatory;flex:1;align-items:center;padding:0 8px;display:flex;position:relative;overflow:auto}.strip-scroller.vertical{scroll-snap-type:y mandatory;flex-direction:column}.strip-scroller::-webkit-scrollbar{display:none}.strip-scroller{scrollbar-width:none}.strip-content{flex-direction:inherit;flex:none;align-items:center;display:flex;position:relative}.strip-scroller:not(.vertical) .strip-content{height:100%}.strip-scroller.vertical .strip-content{width:100%}.film-base-layer{z-index:0;position:absolute}.film-base-layer.v{width:var(--strip-w,min(78%, 340px));top:0;bottom:0;left:50%;transform:translate(-50%)}.film-base-layer.h{height:var(--strip-h,min(52vh, 380px));top:50%;left:0;right:0;transform:translateY(-50%)}.fbl-sp{opacity:.95;position:absolute}.fbl-tail{background:inherit;position:absolute}.frame-slot{scroll-snap-align:center;z-index:1;filter:brightness(1.16)saturate(.35)contrast(.88);flex:none;place-items:center;transition:filter .5s,opacity .5s;display:grid;position:relative}.frame-slot.lit{filter:brightness(1.03)saturate(1.02)}.frame-slot canvas,.frame-slot img{display:block}.film-frame-lite{width:100%;height:auto;padding:var(--sband,calc(var(--fborder,3px) + 10px));justify-content:center;align-items:center;display:flex;position:relative}.film-frame-lite.h{padding:calc(var(--fborder,3px) + 12px)}.ffl-rebate{background:var(--pf,#0c0b09);width:100%;height:auto;aspect-ratio:var(--photo-aspect,.75);justify-content:center;align-items:center;padding:0;display:flex;position:relative;overflow:hidden}.ffl-rebate:after{content:"";z-index:2;pointer-events:none;box-shadow:inset 0 0 0 var(--fborder,3px) var(--pf,#0c0b09);position:absolute;inset:0}.ffl-photo{place-items:center;width:100%;height:100%;display:grid}.ffl-photo img{object-fit:cover;width:100%;height:100%}.ffl-photo.is-rotated{position:absolute;inset:0}.ffl-edge{font-family:ui-monospace,monospace;font-size:var(--fedge,8px);letter-spacing:.12em;color:var(--pe,#d8d2b8);opacity:.9;z-index:2;position:absolute}.film-frame-lite.v .ffl-edge{writing-mode:vertical-rl;bottom:10px;left:0}.film-frame-lite.h .ffl-edge{bottom:4px;left:10px}.film-viewer{background:#e4e0d6;transition:background .55s;overflow:hidden}.film-viewer.phase-backlit,.film-viewer.phase-scanning,.film-viewer.phase-digitized,.film-viewer.phase-raw-preview{background:#f8f5ec}.viewer-title{color:#77736a;letter-spacing:.2em;align-self:center;font:500 10px/1 ui-monospace,monospace}.overview-canister{--canister-top:34px;z-index:22;top:var(--canister-top);transform-origin:50%;width:205px;transition:opacity .35s,top .45s,transform .45s;position:absolute;left:calc(50% + 18px);transform:translate(-50%)rotate(90deg)}.phase-unfolding .overview-canister{animation:.62s cubic-bezier(.4,0,.2,1) both overview-canister-enter}@keyframes overview-canister-enter{0%{top:46%;transform:translate(-50%,-50%)rotate(0)scale(.64)}to{top:34px;transform:translate(-50%)rotate(90deg)scale(1)}}.film-viewer.phase-developed .overview-canister{top:46%;transform:translate(-50%,-50%)rotate(0)scale(.64)}.film-viewer.phase-developed .bottom,.film-viewer.phase-developed .counter-chip{visibility:hidden}.film-viewer.phase-developed .overview-scroller{opacity:0}.film-viewer.phase-developed .developed-roll{z-index:23;background:0 0;border-radius:14px;width:150px;height:150px;min-height:0;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.film-viewer.phase-developed .developed-stamp{margin:0;position:absolute;top:50%;right:-66px}.film-viewer.phase-developed .viewer-hint{z-index:23;text-align:center;color:var(--ink-soft);font-size:13px;position:absolute;top:calc(46% + 104px);left:0;right:0}.film-viewer.phase-sealed .top,.film-viewer.phase-sealed .bottom,.film-viewer.phase-sealed .counter-chip{visibility:hidden}.film-viewer.focused .overview-canister{z-index:9;opacity:0;pointer-events:none;transition:opacity .14s}.film-viewer.focus-transition:not(.focused) .overview-canister{opacity:1;pointer-events:none;animation:.38s linear both overview-canister-return}@keyframes overview-canister-return{0%{opacity:0}20%{opacity:.08}65%{opacity:.85}to{opacity:1}}.film-viewer .overview-scroller{--strip-w:163px;z-index:10;scroll-snap-type:none;overflow-anchor:none;overscroll-behavior:contain;align-items:center;padding-left:0;padding-right:0;display:flex;position:absolute;inset:228px 0 82px;overflow:hidden auto}.phase-unfolding .overview-scroller{pointer-events:none;animation:1.08s cubic-bezier(.48,.02,.22,1) .48s both overview-strip-unfold}@keyframes overview-strip-unfold{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}.film-viewer.focused .overview-scroller{--strip-w:min(88vw, 378px);top:54px}.film-viewer .strip-content{width:100%}.film-viewer .film-frames{transform-origin:0 0;flex-direction:column;align-items:center;width:100%;display:flex;position:relative}.film-viewer .film-base-layer.v{width:var(--strip-w);height:100%}.film-viewer .frame-slot{width:var(--strip-w);aspect-ratio:auto;filter:none;opacity:1;transition:opacity .25s}.phase-digitized .frame-slot{cursor:zoom-in}.film-viewer.focused .frame-slot{cursor:pointer;scroll-snap-align:center}.film-viewer.focused .frame-slot.focused-frame{cursor:zoom-out}.film-viewer.focused:not(.focus-transition) .frame-slot:not(.focused-frame){opacity:.72}.film-viewer.focused .frame-slot.current{opacity:1}.film-viewer .ffl-photo{position:relative;overflow:hidden}.film-viewer .ffl-photo img{object-fit:cover;width:100%;height:100%;transition:opacity .32s,filter .5s;position:absolute;inset:0;transform:scale(1.008)}.film-viewer .ffl-photo.is-rotated img{width:var(--rotated-w);height:var(--rotated-h);top:50%;left:50%;transform:translate(-50%,-50%)rotate(90deg)scale(1.008)}.film-leader-space{z-index:1;width:var(--strip-w);aspect-ratio:100/74;pointer-events:none;flex:none;position:relative}.film-viewer .photo-negative{opacity:1;filter:invert(.92)sepia(.72)saturate(.62)hue-rotate(334deg)contrast(.86)brightness(.52)}.phase-backlit .photo-negative,.phase-scanning .photo-negative,.phase-raw-preview .photo-negative{filter:invert(.94)sepia(.62)saturate(.68)hue-rotate(334deg)contrast(.95)brightness(.93)}.film-viewer .photo-positive{opacity:0}.phase-digitized .photo-positive{opacity:1}.phase-digitized .photo-negative{opacity:0}.photo-positive-clip{position:absolute;inset:0;overflow:hidden}.phase-scanning .photo-positive-clip{animation:scan-frame-reveal .48s var(--scan-delay,0s) linear forwards;clip-path:inset(0 0 100%)}.phase-scanning .photo-negative{animation:scan-negative-hide .3s var(--scan-delay,0s) linear forwards}@keyframes scan-negative-hide{to{opacity:0}}@keyframes scan-frame-reveal{0%{opacity:0;clip-path:inset(0 0 100%)}20%{opacity:1}to{opacity:1;clip-path:inset(0)}}.phase-digitized .photo-positive.is-hires{animation:.28s ease-out both hires-arrive}@keyframes hires-arrive{0%{opacity:.76}to{opacity:1}}.lightbox-shade{z-index:18;pointer-events:none;background:#36302557;transition:opacity .7s;position:absolute;inset:0}.lightbox-shade.lit{opacity:0}.scan-beam{z-index:24;pointer-events:none;background:#fff7d8;height:3px;animation:1.7s linear both scan-beam-pass;position:absolute;top:220px;left:8%;right:8%;box-shadow:0 0 8px 2px #fff5cdf2,0 12px 34px 12px #ffe2a040}@keyframes scan-beam-pass{0%{opacity:0;transform:translateY(0)}8%{opacity:1}92%{opacity:1}to{opacity:0;transform:translateY(calc(100dvh - 320px))}}.scan-cta,.return-digital,.focus-close{appearance:none;z-index:32;color:var(--ink);cursor:pointer;background:#faf8f1eb;border:1px solid #26241f2b;position:absolute;box-shadow:0 7px 22px #2d281f1a}.scan-cta{letter-spacing:.08em;white-space:nowrap;border-radius:999px;padding:11px 20px;font-size:12px;bottom:101px;left:50%;transform:translate(-50%)}.return-digital{border-radius:999px;padding:10px 15px;font-size:12px;bottom:91px;right:16px}.focus-close{border-radius:999px;padding:9px 14px;font-size:12px;top:65px;right:15px}.art-note{z-index:33;color:#f2efe6;text-align:center;background:#1f1d19c2;border-radius:10px;width:min(84%,330px);padding:9px 12px;font-size:11px;line-height:1.55;animation:.35s ease-out both art-note-in;position:absolute;bottom:143px;left:50%;transform:translate(-50%)}@keyframes art-note-in{0%{opacity:0;transform:translate(-50%,7px)}to{opacity:1;transform:translate(-50%)}}.film-viewer .counter-chip{bottom:65px}@media (height<=700px){.overview-canister{--canister-top:16px;transform:translate(-50%)rotate(90deg)scale(.88)}.phase-unfolding .overview-canister{animation-name:overview-canister-enter-short}@keyframes overview-canister-enter-short{0%{top:46%;transform:translate(-50%,-50%)rotate(0)scale(.64)}to{top:16px;transform:translate(-50%)rotate(90deg)scale(.88)}}.film-viewer .overview-scroller{top:198px}.film-viewer.focused .overview-scroller{top:50px}.art-note{bottom:132px}}.sheet-scrim{z-index:40;background:#1c1b184d;position:absolute;inset:0}.film-viewer.sheet-open .overview-scroller{overflow:hidden}.sheet{z-index:41;background:#fbfaf7;border-radius:18px 18px 0 0;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.export-sheet{padding:10px 20px calc(18px + env(safe-area-inset-bottom,0px));will-change:transform;transition:transform .24s}.export-sheet.dragging{transition:none}.sheet-grabber{background:#1c1b182e;border-radius:999px;flex:none;width:36px;height:4px;margin:0 auto 10px}.sheet-head{align-items:center;gap:10px;margin-bottom:4px;display:flex}.sheet-head h2{letter-spacing:.02em;flex:1;font-size:16px;font-weight:700}.sheet-head em{color:var(--ink-soft);font-size:11px;font-style:normal}.sheet-close{appearance:none;color:var(--ink);cursor:pointer;background:#1c1b1812;border:0;border-radius:50%;flex:none;place-items:center;width:30px;height:30px;font-size:15px;display:grid}.export-option{appearance:none;border:0;border-bottom:1px solid var(--line);color:var(--ink);text-align:left;cursor:pointer;background:0 0;flex-direction:column;gap:4px;padding:13px 2px;display:flex}.export-option:last-of-type{border-bottom:0}.export-option span{font-size:15px;font-weight:600}.export-option small{color:var(--ink-soft);letter-spacing:.12em;font:600 10px/1 ui-monospace,monospace}.export-option:disabled{opacity:.45;cursor:default}.cap-scrim{z-index:70}.cap-panel{z-index:71;padding:10px 20px calc(18px + env(safe-area-inset-bottom,0px))}.cap-note{color:var(--ink-soft);margin:0 0 10px;font-size:12px;line-height:1.6}.cap-list{flex-direction:column;max-height:46vh;display:flex;overflow-y:auto}.cap-row{border-bottom:1px solid var(--line);align-items:center;display:flex}.cap-row:last-child{border-bottom:0}.cap-open{appearance:none;min-height:50px;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:10px;padding:10px 2px;font-size:14px;font-weight:600;display:flex}.cap-open i{border-radius:2px;flex:none;width:10px;height:15px;box-shadow:inset 0 0 0 1px #1c1b181f}.cap-open b{color:var(--ink-soft);margin-left:auto;font-size:11px;font-weight:600}.cap-delete{appearance:none;color:#a4543f;cursor:pointer;background:0 0;border:0;flex:none;min-width:44px;min-height:44px;font-size:12px;font-weight:650}.toast{color:#f0eee8;z-index:60;text-align:center;background:#141416eb;border-radius:999px;max-width:86%;padding:10px 18px;font-size:13px;line-height:1.5;position:absolute;bottom:90px;left:50%;transform:translate(-50%)}.lab-page{min-height:100dvh;color:var(--ink);background:#f1eee6;padding:20px}.lab-head{align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.lab-head h1{font-size:18px;font-weight:700}.lab-head span{color:var(--ink-soft);font-size:12px}.lab-films{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.lab-films button{appearance:none;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #1c1b1833;border-radius:999px;padding:7px 13px;font-size:12px;font-weight:650}.lab-films button.active{color:#f3f1ea;background:#1c1b18;border-color:#1c1b18}.lab-body{grid-template-columns:250px 1fr;align-items:start;gap:20px;display:grid}@media (width<=860px){.lab-body{grid-template-columns:1fr}}.lab-controls{background:#fbfaf7;border:1px solid #1c1b1824;border-radius:12px;padding:14px;position:sticky;top:16px}.lab-controls h2{margin-bottom:10px;font-size:14px}.lab-controls label{color:var(--ink-soft);grid-template-columns:1fr 110px;align-items:center;gap:8px;margin-bottom:7px;font-size:11px;display:grid}.lab-actions{gap:8px;margin-top:12px;display:flex}.lab-actions button{appearance:none;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #1c1b1833;border-radius:8px;flex:1;padding:8px 10px;font-size:12px;font-weight:650}.lab-candidates{margin-top:14px}.lab-candidates h3{margin-bottom:6px;font-size:12px}.lab-candidates .lab-empty{color:var(--ink-soft);font-size:11px}.lab-candidates>div{gap:6px;margin-bottom:5px;display:flex}.lab-candidates>div button{appearance:none;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #1c1b182e;border-radius:7px;padding:6px 8px;font-size:11px}.lab-candidates>div.active button:first-child{color:#f3f1ea;background:#1c1b18}.lab-photos{flex-direction:column;gap:22px;display:flex}.lab-row h3{margin-bottom:8px;font-size:13px}.lab-tiles{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;display:grid}.lab-tile{margin:0}.lab-tile button{appearance:none;cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.lab-tile canvas{border-radius:6px;width:100%;height:auto;display:block;box-shadow:0 3px 10px #231f1824}.lab-tile figcaption{color:var(--ink-soft);text-align:center;margin-top:5px;font-size:11px}.lab-inspect{z-index:90;background:#141310e6;flex-direction:column;display:flex;position:fixed;inset:0}.lab-inspect-bar{color:#f0eee8;align-items:center;gap:10px;padding:10px 14px;font-size:12px;display:flex}.lab-inspect-bar span{flex:1}.lab-inspect-bar button{appearance:none;color:#f0eee8;cursor:pointer;background:0 0;border:1px solid #f0eee866;border-radius:8px;padding:6px 12px;font-size:12px}.lab-inspect-scroll{flex:1;padding:0 14px 20px;overflow:auto}.lab-inspect-scroll.px canvas{cursor:grab;width:auto;max-width:none;height:auto}
