:root{color-scheme:dark;--bg:#1b1c1a;--panel:#222320;--raised:#2b2c28;--line:#363730;--text:#e9e8df;--muted:#a2a49a;--accent:#dfb474;--accent-ink:#251f15;--green:#a9b59a;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:13px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{color:inherit;background:none;border:1px solid transparent;border-radius:5px;cursor:pointer;padding:9px 12px;min-height:36px}button:hover{background:#ffffff09}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit;text-decoration:none}input,select,textarea{width:100%;border:1px solid #45463e;border-radius:4px;background:#1b1c19;color:var(--text);padding:10px;min-height:38px}textarea{min-height:75px;resize:vertical}label{display:block;font-size:12px;color:#c1c2b8;margin:15px 0 7px}label input,label select,label textarea{margin-top:7px}input[type=checkbox]{width:16px;min-height:16px;accent-color:var(--accent);vertical-align:middle;margin-right:8px}input[type=range]{padding:0;min-height:14px;accent-color:var(--accent);border:0;cursor:pointer}input[type=number]{padding:5px 8px}h1,h2,h3,p{margin-top:0}.primary{background:var(--accent);color:var(--accent-ink);font-weight:600;padding:11px 17px}.primary:hover{background:#ebc28a}.primary span{margin-left:24px}.quiet{border-color:var(--line)}.muted,.hint{color:var(--muted);line-height:1.7}.hint{font-size:11px}.eyebrow{font-size:10px;letter-spacing:1.9px;font-weight:600;color:var(--muted)}[hidden]{display:none!important}.topbar{height:70px;display:flex;align-items:center;padding:0 24px;border-bottom:1px solid var(--line);gap:22px;background:#20211e}.brand{font-family:Georgia,serif;font-style:italic;font-size:39px;letter-spacing:-3px;padding:0 6px 6px}.brand span{font:10px sans-serif;letter-spacing:0;color:var(--accent);margin-left:5px}.top-divider{height:22px;width:1px;background:var(--line)}.darkroom-label{font-size:9px;letter-spacing:2px;color:var(--muted)}.topbar nav{display:flex;align-self:stretch;margin:auto;gap:10px}.topbar nav button{border-radius:0;padding:0 20px;color:var(--muted)}.topbar nav .active{border-bottom:2px solid var(--accent);color:var(--text)}.top-actions{display:flex;align-items:center;gap:7px}.device{font-size:11px;color:var(--muted)}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:6px}.workspace{display:grid;grid-template-columns:214px minmax(0,1fr) 286px;min-height:calc(100dvh - 98px)}.sidebar{border-right:1px solid var(--line);display:flex;flex-direction:column;padding:23px 12px 0;background:#20211e}.sidebar-heading{display:flex;justify-content:space-between;align-items:center;padding:0 8px 19px}.sidebar-heading button{font-size:22px;padding:0 8px}.roll-item{width:100%;text-align:left;margin-bottom:7px;padding:13px 10px;display:flex;gap:10px;align-items:center}.roll-item .roll-icon{font-size:22px;color:#a4a38e}.roll-item strong{font-size:12px;display:block;font-weight:500;overflow-wrap:anywhere}.roll-item small{font-size:10px;color:var(--muted);display:block;margin-top:6px}.roll-item.active{background:#333329;box-shadow:inset 2px 0 var(--accent)}.sidebar-empty{font-size:12px;line-height:1.8;padding:15px;color:var(--muted)}.sidebar-bottom{margin-top:auto;padding:25px 0 18px}.sidebar-bottom button{display:flex;text-align:left;align-items:center;gap:10px;width:100%;border:1px solid var(--line);padding:12px 8px}.sidebar-bottom strong{font-size:11px;font-weight:500}.sidebar-bottom small{font-size:9px;display:block;color:var(--muted);margin-top:5px}.sidebar-bottom>a{display:block;font-size:10px;color:var(--muted);padding:20px 10px 0}main{display:flex;flex-direction:column;min-width:0;min-height:650px}.roll-toolbar{padding:27px 30px 20px;display:flex;justify-content:space-between;align-items:center}.breadcrumb{font-size:9px;letter-spacing:1.5px;color:var(--muted);margin-bottom:12px}.breadcrumb span{margin-left:8px}.roll-toolbar h1{font-size:23px;font-weight:450;letter-spacing:-.7px;margin-bottom:7px}.roll-toolbar p{font-size:11px;color:var(--muted);margin:0}.roll-toolbar button{font-size:11px}.landing{text-align:center;max-width:760px;width:100%;margin:auto;padding:32px 30px 25px}.landing h2{font-family:Georgia,serif;font-size:32px;letter-spacing:-.6px;font-weight:400;margin-bottom:17px}.landing>p:not(.eyebrow){color:var(--muted);line-height:1.8;font-size:13px}.landing .eyebrow{color:var(--accent);margin:26px 0 17px}.landing>.primary{margin:12px 0 18px;padding:13px 22px}.landing>.hint{font-size:10px!important}.film-symbol{display:flex;justify-content:center;gap:9px;transform:rotate(-7deg);width:200px;height:80px;background:#353329;margin:0 auto;padding:17px 12px;position:relative;box-shadow:0 10px 30px #0002}.film-symbol:before,.film-symbol:after{content:"";position:absolute;left:8px;right:8px;height:6px;background:repeating-linear-gradient(90deg,#181915 0 8px,transparent 8px 17px)}.film-symbol:before{top:5px}.film-symbol:after{bottom:5px}.film-symbol span{width:52px;border:1px solid #827453;background:#8d784333}.landing-notes{display:grid;grid-template-columns:repeat(3,1fr);text-align:left;gap:20px;border-top:1px solid var(--line);margin-top:55px;padding-top:27px}.landing-notes span{display:block;font-size:10px;color:var(--accent);margin-bottom:11px;font-family:monospace}.landing-notes strong{font-size:12px;font-weight:500}.landing-notes p{color:var(--muted);font-size:10px;line-height:1.7;margin-top:8px}.inspector{background:#222320;border-left:1px solid var(--line);display:flex;flex-direction:column;min-width:0}.inspector-tabs{display:flex;border-bottom:1px solid var(--line);padding:12px 12px 0;gap:0}.inspector-tabs button{flex:1;font-size:11px;border-radius:0;padding-bottom:15px;color:var(--muted)}.inspector-tabs .active{color:var(--accent);border-bottom:2px solid var(--accent)}#panel-content{flex:1;overflow:auto;max-height:calc(100dvh - 230px)}.panel-section{padding:21px 20px;border-bottom:1px solid var(--line)}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px;font-size:10px;letter-spacing:1.3px}.panel-heading button{font-size:10px;color:var(--muted);padding:0;min-height:20px;letter-spacing:0}.slider-label{display:flex;justify-content:space-between;margin:13px 0 5px;font-size:11px}.slider-label output{font-family:monospace;font-size:10px;color:var(--muted)}.slider-control input{width:100%;height:13px}.inspector-footer{display:flex;padding:14px 12px;gap:8px;border-top:1px solid var(--line)}.inspector-footer button{flex:1;font-size:11px;padding:9px 6px}.panel-empty{padding:24px 20px;font-size:12px;line-height:1.8;color:var(--muted)}.scanner-card{border:1px solid var(--line);padding:16px;border-radius:6px}.scanner-card h3{font-size:12px;font-weight:500;margin:8px 0}.scanner-card p{font-size:11px}.preset-row{display:flex;gap:6px}.preset-row button{border:1px solid var(--line);flex:1;font-size:11px;padding:8px 3px}.preset-row button.active{color:var(--accent);border-color:var(--accent)}.full{width:100%;margin-top:12px}.statusbar{height:28px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);font-size:9px;color:var(--muted);background:#20211e;letter-spacing:.3px}#viewer{flex:1;display:flex;flex-direction:column;min-height:400px;padding:0 25px}.viewer-toolbar,.viewer-bottom{display:flex;align-items:center;justify-content:space-between;height:43px;color:var(--muted);font-size:10px;gap:10px}.viewer-toolbar button{padding:5px 9px;font-size:11px;min-height:28px}.segmented{display:flex;border:1px solid var(--line);border-radius:4px}.segmented .active{background:var(--raised);color:var(--text)}.image-stage{background:#141512;min-height:340px;flex:1;display:flex;justify-content:center;align-items:center;overflow:auto;position:relative;padding:20px;border:1px solid #2a2b25}#image-wrap{position:relative;line-height:0;max-width:100%;}#main-image{max-width:100%;max-height:calc(100dvh - 410px);object-fit:contain;display:block;min-height:120px}#overlay{position:absolute;inset:0;width:100%;height:100%;touch-action:none}#rating{display:flex}#rating button{padding:2px 4px;min-height:25px;color:var(--accent)}.filmstrip{padding:14px 25px 18px;border-top:1px solid var(--line);margin-top:10px}.filmstrip-heading{font-size:8px;letter-spacing:1px;color:var(--muted);display:flex;justify-content:space-between;padding-bottom:14px}#filmstrip{display:flex;gap:10px;overflow-x:auto;padding:2px}#filmstrip button{flex:0 0 95px;padding:5px;background:#252620;border:1px solid var(--line)}#filmstrip button.active{border-color:var(--accent);background:#353329}#filmstrip img{width:83px;height:60px;object-fit:contain;display:block}#filmstrip small{font-size:9px;display:flex;justify-content:space-between;margin-top:7px}.job-banner{background:#353328;border:1px solid #63563e;margin:12px 25px;padding:12px 16px;display:flex;align-items:center;gap:12px}.job-banner strong{display:block;font-size:11px;margin-bottom:4px}.job-banner span{font-size:11px;color:#c6bdac}.job-banner a{margin-left:auto;color:var(--accent);white-space:nowrap}.spinner{width:10px;height:10px;border-radius:50%;background:var(--accent);flex:none}.job-banner.failed{border-color:#9e6860;background:#372925}.job-banner.complete{border-color:#526448}.region-list{display:flex;flex-direction:column;gap:8px}.region-row{background:#292a25;padding:10px;border-radius:4px}.region-title{display:flex;justify-content:space-between;align-items:center}.region-title label{margin:0}.region-title button{padding:1px 6px;min-height:24px}.region-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px}.region-fields label{font-size:9px;margin:7px 0 0}.region-fields input{font-size:10px;width:100%;margin-top:4px}.histogram{height:76px;width:100%;display:block;background:#1c1d19;border-bottom:1px solid #53544b}.histogram-labels{display:flex;justify-content:space-between;font-size:8px;color:var(--muted);margin-top:8px}.cleanup-modes{display:flex;border:1px solid var(--line);border-radius:4px}.cleanup-modes button{font-size:10px;flex:1;padding:8px 3px}.cleanup-modes .active{background:#414035;color:var(--accent)}.candidates{max-height:170px;overflow:auto}.candidates label{font-size:10px;margin:7px 0}.warning{font-size:11px;line-height:1.7;background:#383327;padding:11px;border-left:2px solid var(--accent);color:#d0c4ae}.status-message{color:var(--muted);font-size:11px;line-height:1.8}dialog{color:var(--text);background:#272823;border:1px solid #4a4b40;border-radius:9px;padding:25px;width:540px;max-width:calc(100vw - 28px);max-height:90dvh;box-shadow:0 25px 120px #0008}dialog::backdrop{background:#080a09b8;backdrop-filter:blur(4px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.dialog-heading h2{font-size:22px;font-weight:450;letter-spacing:-.4px;margin:0}.dialog-heading button{font-size:22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.form-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.drive{padding:15px;border:1px solid var(--line);margin:12px 0;border-radius:5px}.drive strong{font-size:13px}.drive p{margin:9px 0;color:var(--muted);font-size:11px}.drive button{font-size:11px}.login-page{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr}.login-art{background:#252720;position:relative;padding:60px 65px;overflow:hidden;display:flex;flex-direction:column;justify-content:center}.large-wordmark{font:italic 90px Georgia,serif;letter-spacing:-7px;position:absolute;top:35px;left:60px}.large-wordmark span{font:18px sans-serif;color:var(--accent);margin-left:9px}.login-art>p{font:44px/1.2 Georgia,serif;margin:80px 0 25px;z-index:1}.edition{position:absolute;bottom:45px;left:65px;font-size:9px;letter-spacing:2px;color:var(--muted)}.negative-strip{position:absolute;display:flex;gap:15px;transform:rotate(-25deg);left:20%;top:15%;width:800px;height:180px;background:#55503a4d;padding:25px 20px;border-top:12px dashed #171913;border-bottom:12px dashed #171913}.negative-strip i{width:180px;background:#a0823b24;border:1px solid #b0a06633}.login-page form{max-width:440px;padding:40px;width:100%;align-self:center;justify-self:center}.family-link{font-size:11px;color:var(--muted);display:block;margin-bottom:70px}.login-page h1{font:33px Georgia,serif;margin-bottom:16px}.login-page form>.muted{margin-bottom:32px;font-size:13px}.login-page .primary{width:100%;margin-top:24px;display:flex;justify-content:space-between}.login-page .hint{margin-top:30px}#login-error{color:#dfa396;margin-top:14px;font-size:12px}#toast{position:fixed;bottom:45px;left:50%;transform:translateX(-50%);max-width:90vw;border:1px solid #696047;border-radius:5px;background:#353329;padding:14px 20px;z-index:100;font-size:12px;box-shadow:0 8px 30px #0005}#grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));width:100%;gap:18px;align-self:stretch}#grid button{border:1px solid var(--line)}#grid img{width:100%;height:120px;object-fit:contain}#grid small{display:block;padding:8px}.compare #image-wrap{display:flex;gap:12px}.compare #main-image{max-width:50%}.compare-image{max-width:48%;object-fit:contain}.details-list{font-size:11px;line-height:1.9;color:var(--muted);overflow-wrap:anywhere}details summary{cursor:pointer;font-size:11px;color:var(--muted);margin:14px 0}.chip{font-size:9px;border:1px solid #5b5a48;border-radius:3px;padding:3px 5px;color:var(--accent)}
@media(min-width:1600px){.workspace{grid-template-columns:240px minmax(0,1fr) 310px}.landing{padding:50px}.landing h2{font-size:38px}.landing-notes{margin-top:80px}#main-image{max-height:calc(100dvh - 420px)}}
@media(max-width:1150px){.workspace{grid-template-columns:170px minmax(0,1fr) 250px}.darkroom-label{display:none}.topbar{padding:0 16px;gap:10px}.roll-toolbar{padding:25px 20px}.landing{padding:25px 20px}.landing h2{font-size:28px}.landing-notes{gap:10px;margin-top:35px}.sidebar{padding:20px 8px 0}.panel-section{padding:18px 15px}#viewer{padding:0 15px}}
@media(max-width:900px){.workspace{grid-template-columns:minmax(0,1fr) 270px}.sidebar{display:none}.topbar nav button{padding:0 14px}.device{font-size:10px}.top-divider{display:none}.roll-toolbar h1{font-size:21px}.landing-notes{margin-top:40px}.login-art{padding:40px}.login-art>p{font-size:34px}.login-page form{padding:30px}.large-wordmark{left:40px}.edition{left:40px}.mobile-rolls{display:block}}
@media(max-width:650px){.topbar{height:61px;padding:0 12px}.brand{font-size:34px}.topbar nav{margin:0 auto;gap:0}.topbar nav button{font-size:11px;padding:0 9px}.top-actions{gap:0}.device{padding:8px 2px}.device #scanner-label{display:none}.top-actions>button{padding:6px;min-width:30px}.workspace{display:flex;flex-direction:column;min-height:calc(100dvh - 89px)}main{min-height:0}.roll-toolbar{padding:23px 20px 20px}.roll-toolbar h1{font-size:21px}.roll-toolbar p{font-size:10px}.breadcrumb{font-size:8px}.landing{padding:35px 25px 25px}.landing h2{font-size:28px}.landing-notes{gap:16px;margin-top:35px;padding-top:24px}.landing-notes strong{font-size:11px}.landing-notes p{font-size:10px}.inspector{border-left:0;border-top:1px solid var(--line)}#panel-content{max-height:none}.inspector-tabs{padding-top:7px}.inspector-footer{position:sticky;bottom:0;background:var(--panel);z-index:2}.panel-section{padding:20px}.statusbar{height:28px;font-size:8px}.statusbar>span:last-child{display:none}#viewer{padding:0 12px}.image-stage{padding:10px;min-height:240px;max-height:60dvh}#main-image{max-height:55dvh;min-height:100px}.viewer-toolbar{font-size:9px}.viewer-toolbar button{font-size:10px;padding:6px}.viewer-bottom{font-size:9px}#view-hint{display:none}.filmstrip{padding:14px 15px}.filmstrip-heading{font-size:7px}.job-banner{margin:12px}.login-page{display:block}.login-art{min-height:200px;padding:30px}.large-wordmark{font-size:60px;top:15px;left:30px}.login-art>p{font-size:27px;margin:60px 0 0}.edition{display:none}.negative-strip{top:10%;height:120px;left:50%;width:400px}.login-page form{padding:30px;max-width:470px;margin:0 auto}.family-link{margin-bottom:30px}.login-page h1{font-size:30px}dialog{padding:20px}.form-grid{gap:0 10px}.viewer-toolbar #image-label{display:none}button{min-height:40px}.preset-row button{min-height:44px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
