:root{--ink:#202434;--muted:#868a99;--line:#e9eaf0;--coral:#f26275;--purple:#7259c9;--bg:#f8f9fb;--shadow:0 18px 65px #1921380b;font-family:Inter,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ad97ff88;outline-offset:2px}[hidden]{display:none!important}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:12px}.brand b{font-size:15px;letter-spacing:1.2px}.brand b span{font-weight:500;color:var(--muted)}.brand small{font-size:10px;display:block;letter-spacing:2px;color:var(--muted);margin-top:3px}.logo-bubble{width:59px;height:59px;border-radius:19px;display:grid;place-items:center;background:linear-gradient(140deg,#f5879e,#ae6edc);color:white;font-size:33px;font-weight:850;font-style:italic;box-shadow:0 8px 25px #f5879e44}.logo-bubble.small{width:43px;height:43px;border-radius:14px;font-size:25px}.top-actions{display:flex;align-items:center;gap:10px}.status-pill{color:#8c90a1;background:#f4f5f8;border:1px solid var(--line);border-radius:30px;padding:8px 13px;font-size:12px}.status-pill.ready{background:#e9fbf1;color:#1a9562;border-color:#cceddc}.button{border:1px solid transparent;border-radius:11px;padding:11px 16px;font-weight:680;white-space:nowrap;transition:.15s;background:#fff;color:var(--ink)}.button:hover:not(:disabled){filter:brightness(.97);transform:translateY(-1px)}.button.primary{background:linear-gradient(110deg,#8a6ae1,#bd6dcc);color:white;box-shadow:0 5px 17px #9d72d02e}.button.success{background:#21a774;color:white}.button.outline{background:#fff;border-color:#e1d6f4;color:#7652bf}.button.ghost{border-color:#e9eaf0;background:#fff;color:#595e6f}.button.danger{background:#fff2f3;color:#bb4958;border:1px solid #fbd9df}.button.full{width:100%}.app-body{display:grid;grid-template-columns:295px minmax(350px,1fr) 302px;flex:1;min-height:calc(100vh - 76px)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:22px 16px;min-width:0}.sidebar-heading{display:flex;align-items:end;justify-content:space-between;padding:6px 7px 21px}.sidebar-heading h2,.inspector-header h2{font-size:20px;letter-spacing:-.6px;margin:4px 0 0}.eyebrow{font-size:10px;font-weight:800;letter-spacing:1.8px;color:#a19baa}.counter{background:#f4effc;color:#9674c4;font-weight:800;border-radius:20px;padding:6px 10px}.dropzone{border:1.5px dashed #d8c8eb;border-radius:15px;background:#fbf9ff;display:flex;flex-direction:column;align-items:center;text-align:center;padding:18px 6px;cursor:pointer;transition:.15s}.dropzone.hover,.dropzone:hover{background:#f3edff;border-color:#8a6ae1}.drop-icon{font-size:28px;color:#9871d0;line-height:1}.dropzone strong{font-size:13px;margin-top:7px}.dropzone p{margin:5px 0 7px;color:var(--muted);font-size:12px}.dropzone span{font-size:10px;letter-spacing:.7px;color:#aaa4b1}.sidebar-tools{display:grid;gap:8px;margin-top:17px}.sidebar-meta{font-size:11px;margin:17px 3px 7px;display:flex;justify-content:space-between;color:#9799a4}.progress-rail{height:4px;border-radius:9px;background:#f3f1f6;overflow:hidden}.progress-rail div{height:100%;width:0;background:#b077dc;transition:.2s}.filters{display:flex;gap:4px;flex-wrap:wrap;margin:20px 0 13px}.filter{border:0;background:#f3f4f7;border-radius:7px;padding:7px 9px;font-size:11px;color:#7a7b87}.filter.active{background:#eee8fa;color:#764fbd;font-weight:700}.thumb-list{max-height:calc(100vh - 433px);min-height:80px;overflow-y:auto;display:grid;align-content:start;gap:7px}.thumb{width:100%;display:flex;align-items:center;gap:11px;padding:7px;text-align:left;border-radius:11px;background:white;border:1px solid transparent;min-width:0}.thumb:hover{background:#faf8ff}.thumb.selected{background:#f9f6ff;border-color:#e2d6fa}.thumb img{width:49px;height:49px;object-fit:contain;background:#f1f1f2;border-radius:7px;flex:none}.thumb-info{min-width:0;flex:1}.thumb-info b{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:650}.thumb-info small{font-size:10px;color:#a2a3ae;display:block;margin-top:5px}.indicator{flex:none;width:8px;height:8px;border-radius:50%;background:#ccd0d9}.indicator.review{background:#f5b548}.indicator.approved{background:#26c387}.indicator.failed,.indicator.needs_type{background:#ec6373}.indicator.processing,.indicator.classifying{background:#9874d4;animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.3}}.no-items{text-align:center;color:#999aa9;font-size:12px;padding:24px 5px}.workspace{padding:37px clamp(20px,3.5vw,52px);min-width:0}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:31px}.page-heading h1{font-size:26px;margin:7px 0 9px;letter-spacing:-1px}.page-heading p{margin:0;color:var(--muted);font-size:12px}.position-label{background:white;border:1px solid var(--line);border-radius:8px;padding:9px 13px;color:#8b8c97;font-size:12px}.compare{display:grid;grid-template-columns:1fr 1fr;gap:19px}.compare-panel{background:white;padding:13px;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow);min-width:0}.compare-panel.after-panel{border-color:#d8c9ef}.panel-top{display:flex;justify-content:space-between;align-items:center;margin:5px 3px 13px}.panel-top strong{font-size:11px;letter-spacing:1.6px;color:#808194}.after-panel .panel-top strong{color:#9a73ce}.panel-top span{font-size:10px;color:#a4a4af}.image-frame{aspect-ratio:1;background:#f2f2f3;border-radius:10px;display:grid;place-items:center;overflow:hidden;position:relative}.image-frame img{width:100%;height:100%;object-fit:contain}.image-frame canvas{width:100%;height:100%;touch-action:none;cursor:grab}.image-frame canvas:active{cursor:grabbing}.result-placeholder{color:#c0b1d5;text-align:center;font-size:42px}.result-placeholder p{font-size:12px;color:#9c9aa6}.review-bottom{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:25px 0;padding-bottom:22px;border-bottom:1px solid var(--line);flex-wrap:wrap}.file-details{display:flex;flex-direction:column;gap:7px}.file-details b{font-size:13px;word-break:break-word}.file-details span{font-size:11px;color:#9a9aa7}.review-actions{display:flex;gap:8px;flex-wrap:wrap}.review-actions .button{font-size:12px;padding:11px}.message-line{color:#9497a4;font-size:12px;min-height:18px}.inspector{background:white;border-left:1px solid var(--line);padding:31px 22px;min-width:0}.inspector-header{padding-bottom:23px;border-bottom:1px solid var(--line);margin-bottom:26px}.inspector-header p{font-size:12px;color:#9b9ba8;margin:8px 0 0}.field{font-size:12px;font-weight:680;display:flex;flex-direction:column;gap:9px;margin-bottom:23px}.field input:not([type=range]),.field select,.field textarea{border:1px solid #e4e5ed;border-radius:9px;padding:11px 12px;width:100%;color:#4b4d5a;font-size:13px;background:#fff;min-width:0}.field-help{font-size:11px;line-height:1.6;color:#999cab;font-weight:400;margin:1px 0 0}.field-row{display:flex;justify-content:space-between}.field-row b{color:#895fc6}.field input[type=range]{width:100%;accent-color:#9971d4}.toggle{display:flex;gap:11px;align-items:flex-start;font-size:12px;font-weight:650;margin:6px 0 15px;cursor:pointer}.toggle input{accent-color:#946acc;margin-top:2px}.toggle small{display:block;color:#a1a1ad;font-weight:400;margin-top:5px;line-height:1.4}.info-note{background:#f9f7fd;color:#93909d;font-size:11px;line-height:1.7;border-radius:9px;padding:13px;margin-bottom:24px}.confidence{font-size:11px;color:#9e93b3;margin:-10px 0 22px}.inspector .button.full{margin:10px 0}.muted-hint{font-size:12px;color:#aaa7b4;line-height:1.7}.empty-state{min-height:450px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:#9294a0}.empty-icon{font-size:68px;color:#c6badc}.empty-state h2{color:#494556;font-size:19px;margin:7px 0}.empty-state p{line-height:1.8;font-size:13px}.auth-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 15% 20%,#f9e7f2 0,transparent 40%),radial-gradient(circle at 90% 85%,#ede6fb 0,transparent 35%),#f7f8fc;padding:20px}.auth-card{width:min(420px,100%);padding:38px;background:white;border:1px solid #efedf4;border-radius:22px;text-align:center;box-shadow:0 30px 90px #5d3d9220}.auth-card .logo-bubble{margin:0 auto 23px}.auth-card h1{font-size:31px;margin:7px 0;letter-spacing:-1px}.auth-card p{color:#9999a7;font-size:13px}.auth-card form{text-align:left;display:grid;gap:16px;margin:30px 0 0}.auth-card label{font-weight:650;font-size:12px}.auth-card input{display:block;width:100%;border-radius:9px;border:1px solid #dedee8;padding:13px;margin-top:10px}.auth-card .button{margin-top:4px;padding:14px}.auth-footer{font-size:11px!important;margin-top:23px}.alert{background:#fff0f2;color:#af4053;padding:11px;border-radius:9px;margin-top:20px;font-size:12px}.modal{position:fixed;inset:0;background:#1514269c;display:grid;place-items:center;z-index:20;padding:15px}.modal-panel{background:#fff;border-radius:17px;width:min(460px,100%);padding:25px 26px;box-shadow:0 30px 100px #0a091b33}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.modal-head h2{font-size:18px;margin:0}.toast{position:fixed;bottom:23px;right:24px;max-width:440px;z-index:25;background:#292c3d;color:white;padding:15px 18px;border-radius:12px;box-shadow:0 10px 30px #2c2a4359;font-size:12px;line-height:1.6}.toast.bad{background:#af4656}.toast.good{background:#313346}@media(max-width:1250px){.app-body{grid-template-columns:245px minmax(360px,1fr) 260px}.workspace{padding:26px 18px}.inspector{padding:24px 16px}.review-actions .button{padding:9px;font-size:11px}.topbar{padding:0 20px}}@media(max-width:1010px){.app-body{grid-template-columns:220px minmax(300px,1fr)}.inspector{grid-column:1/-1;border-top:1px solid var(--line);border-left:0;display:block}.inspector-header{margin-bottom:18px}.inspector #inspector-fields{max-width:730px;display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.inspector #inspector-fields[hidden]{display:none}.inspector #product-options,.inspector #zoom-options,.inspector #lifestyle-options{grid-column:1/-1}.thumb-list{max-height:600px}}@media(max-width:700px){.topbar{padding:8px 13px;height:auto;min-height:65px}.top-actions{gap:4px}.top-actions .button{font-size:10px;padding:8px 9px}.status-pill{font-size:10px;padding:7px}.brand small{display:none}.brand b{font-size:11px}.logo-bubble.small{width:33px;height:33px;font-size:20px}.app-body{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--line);padding:16px}.dropzone{padding:13px}.thumb-list{display:flex;overflow-x:auto;min-height:65px;max-height:none}.thumb{width:145px;flex:none}.thumb img{width:42px;height:42px}.sidebar-tools{grid-template-columns:1fr 1fr}.sidebar-tools .button{font-size:11px;white-space:normal}.workspace{padding:23px 14px}.page-heading h1{font-size:20px}.page-heading p{font-size:11px}.page-heading{margin-bottom:18px}.compare{gap:7px}.compare-panel{padding:6px;border-radius:10px}.panel-top{margin:5px 2px 10px}.panel-top strong{font-size:10px}.panel-top span{font-size:9px}.review-bottom{margin:13px 0}.review-actions{width:100%}.review-actions .button{flex:1}.inspector{padding:18px}.inspector #inspector-fields{display:block}.topbar{position:static}}@media(max-width:430px){.top-actions .status-pill{display:none}.compare{grid-template-columns:1fr}.image-frame{max-height:400px}.review-actions{display:grid;grid-template-columns:1fr 1fr}.review-actions .button{white-space:normal}}

/* v1.0.3: Display the ORIGINAL image without square crop. AFTER remains square. */
.compare-panel{align-self:start}
.image-frame.original-frame{aspect-ratio:auto;display:flex;align-items:center;justify-content:center;overflow:visible;min-height:0;background:#f2f2f3}
.image-frame.original-frame img{display:block;width:100%;height:auto;max-height:70vh;min-width:0;object-fit:contain;border-radius:8px}
.image-frame:not(.original-frame)>img{min-width:0;min-height:0}
.updates-panel{width:min(560px,100%);max-height:min(90vh,860px);overflow-y:auto}
.update-version{display:flex;justify-content:space-between;align-items:center;background:#f8f5fc;border:1px solid #e8def6;border-radius:12px;padding:15px;margin-bottom:20px}
.update-version h3{font-size:23px;margin:6px 0 0}
.updates-panel .button.full{margin:8px 0}
.update-message{font-size:12px;line-height:1.5;white-space:pre-line;margin:12px 0;color:#895fc6}
.update-message.error{color:#b54c5b}
.updates-history-title{font-size:13px;margin:22px 0 10px}
.updates-history{display:grid;gap:8px;max-height:160px;overflow:auto}
.update-history-item{display:flex;justify-content:space-between;gap:12px;background:#f8f9fb;padding:10px 12px;border-radius:8px;font-size:11px}
.update-history-item b{font-size:12px}
#top-version{font-size:10px;color:#8d80a6}
@media(max-width:700px){#updates-toggle{font-size:10px;padding:8px 9px}#top-version{display:none}}


/* v1.0.5 - Compact before/after review and visible rectangular photo edges.
   Scope to the compare section only. Other UI cards keep their styling. */
.compare {
  width: 100%;
  max-width: 940px;
  margin-inline: auto;
  gap: 14px;
  align-items: start;
}
.compare .compare-panel {
  min-width: 0;
  padding: 10px;
  border: 1px solid #d2d4da;
  border-radius: 0;
  box-shadow: none;
}
.compare .compare-panel.after-panel { border-color: #d2d4da; }
.compare .image-frame {
  border-radius: 0;
  background: #f7f7f7;
}
/* For AFTER, the grey border marks the exact 1:1 output area. */
.compare .image-frame:not(.original-frame) {
  aspect-ratio: 1;
  overflow: hidden;
  border: 1px solid #b8bbc3;
}
.compare .image-frame:not(.original-frame) img,
.compare .image-frame:not(.original-frame) canvas {
  border-radius: 0;
}
/* For BEFORE, the original can be portrait or landscape.
   Border the actual photo, not a square outer frame with letterboxing. */
.compare .image-frame.original-frame {
  width: 100%;
  aspect-ratio: auto;
  border: 0;
  overflow: visible;
  background: transparent;
}
.compare .image-frame.original-frame img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: min(540px, 65vh);
  margin-inline: auto;
  border: 1px solid #b8bbc3;
  border-radius: 0;
  object-fit: contain;
}
@media (max-width: 700px) {
  .compare { gap: 10px; }
  .compare .compare-panel { padding: 8px; }
  .compare .image-frame.original-frame img { max-height: 430px; }
}
@media (max-width: 430px) {
  .compare { grid-template-columns: 1fr; max-width: 420px; }
  .compare .image-frame.original-frame img { max-height: 340px; }
}
