:root{--bg:#f6f4ef;--ink:#1f2933;--muted:#64707d;--panel:#fff;--line:#d9dee4;--accent:#0f766e;--accent-strong:#0b5f59;--amber:#b7791f;--red:#b42318;--green:#13795b;--shadow:0 14px 45px #1f29331f}*{box-sizing:border-box}html,body{min-height:100%}body{background:linear-gradient(180deg, #ffffffc7, #f6f4eff0), var(--bg);color:var(--ink);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,textarea{font:inherit}button{border:0}.app-shell{width:min(1440px,100%);margin:0 auto;padding:24px}.topbar{justify-content:space-between;align-items:center;gap:16px;padding:10px 0 24px;display:flex}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-mark{border:1px solid var(--line);width:40px;height:40px;color:var(--accent-strong);background:#fff;border-radius:8px;place-items:center;font-weight:800;display:grid;box-shadow:0 6px 20px #1f293314}.brand h1{margin:0;font-size:22px;line-height:1.15}.brand p{color:var(--muted);margin:2px 0 0;font-size:14px}.status-pill{border:1px solid var(--line);min-height:34px;color:var(--muted);white-space:nowrap;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:inline-flex}.dot{background:var(--green);border-radius:999px;width:8px;height:8px}.workspace{grid-template-columns:minmax(360px,.9fr) minmax(520px,1.1fr);align-items:start;gap:18px;display:grid}.panel{border:1px solid var(--line);box-shadow:var(--shadow);background:#fffffff0;border-radius:8px}.panel-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:18px;display:flex}.panel-header h2{margin:0;font-size:18px;line-height:1.25}.panel-header p{color:var(--muted);margin:4px 0 0;font-size:14px;line-height:1.4}.panel-body{padding:18px}.upload-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.dropzone{background:#fbfcfd;border:1px dashed #aab4bf;border-radius:8px;min-height:190px;position:relative;overflow:hidden}.dropzone input{opacity:0;cursor:pointer;position:absolute;inset:0}.dropzone-content{text-align:center;place-items:center;min-height:190px;padding:16px;display:grid}.dropzone strong{margin-bottom:6px;font-size:15px;display:block}.dropzone span{color:var(--muted);font-size:13px;line-height:1.35}.dropzone img{object-fit:contain;background:#eef2f6;width:100%;height:230px;display:block}.form-grid{gap:12px;margin-top:14px;display:grid}.field{gap:6px;display:grid}.field label{color:#344054;font-size:13px;font-weight:650}.field input,.field textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:8px;outline:none;padding:10px 11px}.field textarea{resize:vertical;min-height:72px}.actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.button{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;min-height:42px;padding:10px 14px;font-weight:750;display:inline-flex}.button.primary{background:var(--accent);color:#fff}.button.primary:hover{background:var(--accent-strong)}.button.secondary{border:1px solid var(--line);color:var(--ink);background:#fff}.button:disabled{cursor:not-allowed;opacity:.58}.review-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.preview-card{border:1px solid var(--line);background:#fbfcfd;border-radius:8px;overflow:hidden}.preview-stage{background-color:#0000;background-image:linear-gradient(45deg,#eef2f6 25%,#0000 25%),linear-gradient(-45deg,#eef2f6 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#eef2f6 75%),linear-gradient(-45deg,#0000 75%,#eef2f6 75%);background-position:0 0,0 10px,10px -10px,-10px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:20px 20px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;min-height:280px;position:relative}.preview-stage img{object-fit:contain;width:100%;height:330px;padding:12px;display:block}.metric-list{color:var(--muted);gap:6px;padding:12px;font-size:13px;display:grid}.border-overlay-svg{pointer-events:none;width:calc(100% - 24px);height:306px;position:absolute;inset:12px}.border-overlay-svg--editable{pointer-events:auto;touch-action:none}.border-overlay-rect{fill:none;stroke-dasharray:5 3;stroke-width:1.5px;vector-effect:non-scaling-stroke;opacity:.8;pointer-events:none}.border-overlay-outer{stroke:#fff;stroke-dasharray:6 4;stroke-width:1.5px;opacity:.85;filter:drop-shadow(0 0 1px #0009)}.border-overlay-corner{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.5px;vector-effect:non-scaling-stroke;pointer-events:none}.border-overlay-green{stroke:var(--green)}.border-overlay-amber{stroke:var(--amber)}.border-overlay-red{stroke:var(--red)}.border-overlay-handle{fill:#ffffffeb;stroke:#0f172aa6;stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:grab;pointer-events:auto;transition:fill .12s,stroke .12s}.border-overlay-handle:hover,.border-overlay-handle:active{fill:var(--accent);stroke:var(--accent-strong);cursor:grabbing}.border-overlay-handle--outer{stroke-dasharray:3 2}.border-reset-button{letter-spacing:.02em;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:6px;margin-top:6px;padding:6px 10px;font-size:11px;font-weight:600;transition:background .12s,color .12s,border-color .12s}.border-reset-button:hover{background:var(--accent-soft,#6366f114);color:var(--ink);border-color:var(--accent)}.border-overlay-toggle{z-index:2;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;color:var(--muted);border:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffe0;border-radius:4px;padding:3px 7px;font-size:10px;font-weight:700;transition:background .15s,color .15s,border-color .15s;position:absolute;bottom:8px;right:8px}.border-overlay-toggle--active{background:var(--accent);color:#fff;border-color:var(--accent-strong)}.metric-row{justify-content:space-between;gap:12px;display:flex}.metric-row strong{color:var(--ink)}.metric-warning{color:#6f4f14;background:#fff8e6;border:1px solid #f2d394;border-radius:8px;padding:8px 10px;line-height:1.35}.report{gap:14px;display:grid}.grade-band{border:1px solid var(--line);background:#fbfcfd;border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:18px;padding:18px;display:grid}.grade-number{border:6px solid var(--accent);width:120px;height:120px;color:var(--accent-strong);background:#fff;border-radius:999px;place-items:center;font-size:38px;font-weight:850;display:grid}.grade-band h3{margin:0;font-size:20px}.grade-band p{color:var(--muted);margin:6px 0 0;line-height:1.45}.grade-band-body{flex-direction:column;gap:8px;min-width:0;display:flex}.grade-band-body>h3{margin-bottom:2px}.score-range{--range-band:var(--accent-soft,#6366f12e);--range-band-strong:var(--accent,#6366f1);flex-direction:column;gap:6px;padding:4px 6px 0;display:flex}.score-range--green{--range-band:#16a34a38;--range-band-strong:var(--green,#16a34a)}.score-range--amber{--range-band:#d9770638;--range-band-strong:var(--amber,#d97706)}.score-range--red{--range-band:#dc262638;--range-band-strong:var(--red,#dc2626)}.score-range-endpoints{color:var(--muted);justify-content:space-between;gap:16px;font-size:12px;line-height:1.3;display:flex}.score-range-end-label{flex-direction:column;max-width:48%;display:flex}.score-range-end-label strong{color:var(--ink);font-size:13px}.score-range-end-label--right{text-align:right;align-items:flex-end}.score-range-track{border:1px solid var(--line);background:#eef0f5;border-radius:999px;outline:none;height:16px;position:relative}.score-range-band{background:var(--range-band);border:1px solid var(--range-band-strong);border-radius:999px;position:absolute;top:0;bottom:0}.score-range-needle{background:var(--range-band-strong);border-radius:2px;width:3px;margin-left:-1.5px;position:absolute;top:-4px;bottom:-4px;box-shadow:0 0 0 2px #fff}.score-range-needle-label{background:var(--range-band-strong);color:#fff;white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:700;position:absolute;top:-22px;left:50%;transform:translate(-50%)}.score-range-needle-label:after{content:"";border-left:4px solid #0000;border-right:4px solid #0000;border-top:4px solid var(--range-band-strong);width:0;height:0;position:absolute;top:100%;left:50%;transform:translate(-50%)}.score-range-tick{background:#0f172a2e;width:1px;margin-left:-.5px;position:absolute;top:2px;bottom:2px}.score-range-ticks{color:var(--muted);justify-content:space-between;padding:0 2px;font-size:11px;display:flex}.centering-uncertain-pill,.category-uncertain-pill{background:var(--amber);color:#fff;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle;cursor:help;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:10px;font-weight:700;display:inline-block}.category-uncertain-pill{margin-left:6px;padding:1px 6px;font-size:9px}.category-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.category{border:1px solid var(--line);background:#fff;border-radius:8px;padding:12px}.category span{color:var(--muted);text-transform:uppercase;font-size:12px;display:block}.category strong{margin-top:4px;font-size:22px;display:block}.category p{color:var(--muted);margin:8px 0 0;font-size:13px;line-height:1.35}.report h3{margin:0 0 10px;font-size:16px}.defect-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.defect-list li{border:1px solid var(--line);background:#fff;border-radius:8px;padding:10px 12px}.defect-list strong{margin-bottom:3px;display:block}.defect-list span{color:var(--muted);font-size:13px}.notice{color:#6f4f14;background:#fff8e6;border:1px solid #f2d394;border-radius:8px;padding:12px;font-size:14px;line-height:1.45}.notice ul{margin:8px 0 0;padding-left:18px}.photo-tips,.crop-tips{color:var(--muted);border-top:1px solid var(--border);padding:10px 18px;font-size:13px}.photo-tips summary,.crop-tips summary{cursor:pointer;color:var(--fg);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-weight:600;list-style:none;display:flex}.photo-tips summary:before,.crop-tips summary:before{content:"▶";font-size:10px;transition:transform .15s}.photo-tips[open] summary:before,.crop-tips[open] summary:before{transform:rotate(90deg)}.photo-tips ul,.crop-tips ul{flex-direction:column;gap:6px;margin:10px 0 4px;padding-left:18px;display:flex}.photo-tips li,.crop-tips li{color:var(--muted);font-size:13px;line-height:1.5}.photo-tips li strong,.crop-tips li strong{color:var(--text)}.crop-tips{border-top:none;margin-top:10px;padding:0}.error{color:var(--red);background:#fff1f0;border-color:#f4b4ad}.empty-state{min-height:420px;color:var(--muted);text-align:center;place-items:center;padding:36px;display:grid}.empty-state strong{color:var(--ink);margin-bottom:6px;display:block}.manual-backdrop{z-index:20;background:#1f29339e;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.manual-panel{border:1px solid var(--line);background:#fff;border-radius:8px;width:min(920px,100%);max-height:min(900px,96vh);overflow:auto;box-shadow:0 24px 70px #00000047}.manual-body{padding:18px}.manual-body .actions{z-index:1;background:linear-gradient(#ffffffd6,#fff 30%);margin-bottom:-18px;margin-left:-18px;margin-right:-18px;padding:12px 18px 18px;position:sticky;bottom:0}.manual-image-wrap{border:1px solid var(--line);background:#111827;border-radius:8px;place-items:center;min-height:360px;display:grid;position:relative;overflow:hidden}.manual-image-stage{max-width:100%;display:inline-block;position:relative}.manual-image-stage img{object-fit:contain;cursor:grab;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:auto;max-width:100%;max-height:68vh;display:block}.crop-overlay{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.crop-outside{fill:#00000057;pointer-events:none}.crop-box{cursor:move;fill:#94a3b82e;stroke:#14b8a6f2;stroke-linejoin:round;stroke-width:2px;vector-effect:non-scaling-stroke}.crop-handle-touch{cursor:grab;fill:#0000;pointer-events:all}.crop-handle{fill:var(--accent);pointer-events:none;stroke:#fff;stroke-width:7px;vector-effect:non-scaling-stroke}.crop-handle-label{fill:#fff;pointer-events:none;text-anchor:middle;dominant-baseline:middle;font-weight:850}.crop-handle--selected{stroke:var(--amber)}.crop-handle-touch--selected{fill:#f59e0b14}.crop-loupe{z-index:30;pointer-events:none;border:2px solid #14b8a6e6;border-radius:8px;width:120px;height:120px;position:fixed;overflow:hidden;box-shadow:0 4px 20px #00000080}.crop-loupe canvas{display:block}.nudge-controls{border-bottom:1px solid var(--line);align-items:center;gap:12px;margin-bottom:8px;padding:8px 0 6px;display:flex}.nudge-label{color:var(--muted);min-width:60px;font-size:12px}.nudge-grid{grid-template-columns:repeat(3,36px);gap:4px;display:grid}.nudge-btn{border:1px solid var(--line);background:var(--panel);cursor:pointer;touch-action:manipulation;border-radius:6px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;font-size:15px;display:flex}.nudge-btn:hover{background:var(--line)}.nudge-btn:active{background:var(--accent);color:#fff;border-color:var(--accent)}.nudge-deselect{color:var(--muted);font-size:12px}.dropzone-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.dropzone-actions .button{flex:auto}@media (max-width:1060px){.workspace{grid-template-columns:1fr}}@media (max-width:760px){.app-shell{padding:16px}.topbar,.grade-band{flex-direction:column;align-items:flex-start}.workspace,.upload-grid,.review-grid,.category-grid{grid-template-columns:1fr}.status-pill{white-space:normal}.manual-backdrop{align-items:start;padding:0}.manual-panel{border-radius:0;width:100%;max-height:100dvh}.manual-body{padding:12px}.manual-body .actions{margin-bottom:-12px;margin-left:-12px;margin-right:-12px;padding:12px}.manual-body .button{flex:140px}.manual-image-wrap{min-height:0}.manual-image-stage img{max-height:62dvh}}.preview-card-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px;display:flex}.preview-card-header h3{margin:0;font-size:14px}.view-tabs{border-bottom:1px solid var(--line);background:var(--bg);gap:0;padding:0 8px;display:flex}.view-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 14px;font-size:12px;font-weight:600;transition:color .12s,border-color .12s}.view-tab:hover{color:var(--ink)}.view-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.detection-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;position:absolute;top:8px;right:8px}.badge-auto{color:#166534;background:#dcfce7}.badge-manual{color:#0f5249;background:#ccfbf1}.badge-fallback{color:#713f12;background:#fef9c3}.badge-variance{color:#4338ca;cursor:help;background:#ede9fe}.centering-row{grid-template-columns:30px 1fr 42px;align-items:center;gap:8px;display:grid}.centering-label{color:var(--muted);font-size:12px}.centering-track{background:var(--line);border-radius:999px;height:6px;position:relative;overflow:visible}.centering-fill{border-radius:999px 0 0 999px;height:100%;transition:width .25s}.centering-center-mark{background:var(--muted);opacity:.45;border-radius:1px;width:2px;height:12px;position:absolute;top:-3px;left:50%;transform:translate(-50%)}.centering-ratio{text-align:right;font-size:12px;font-weight:700}.centering-green{background:var(--green);color:var(--green)}.centering-amber{background:var(--amber);color:var(--amber)}.centering-red{background:var(--red);color:var(--red)}.analysis-progress{margin-top:14px}.progress-hint{color:var(--muted);margin:0 0 6px;font-size:13px}.progress-track{background:var(--line);border-radius:999px;height:4px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:999px;height:100%;animation:15s ease-out forwards progress-grow}@keyframes progress-grow{0%{width:0%}to{width:85%}}.dropzone-wrap{flex-direction:column;gap:6px;display:flex}.camera-btn{min-height:36px;font-size:13px}.report-header-actions{flex-shrink:0;gap:8px;display:flex}.report-header-actions .button{min-height:34px;padding:6px 12px;font-size:13px}.history-panel{margin-top:18px}.history-toggle{cursor:pointer;width:100%;color:var(--ink);text-align:left;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;padding:14px 18px;font-size:15px;font-weight:700;display:flex}.history-toggle:hover{background:#00000005}.history-chevron{color:var(--muted);font-size:18px;transition:transform .18s;display:inline-block}.history-chevron.open{transform:rotate(180deg)}.history-body{border-top:1px solid var(--line);gap:8px;display:grid}.history-entry{border:1px solid var(--line);cursor:pointer;text-align:left;background:#fff;border-radius:8px;align-items:center;gap:14px;width:100%;padding:10px 12px;display:flex}.history-entry:hover{border-color:var(--accent);background:#f0fdfc}.history-grade{border:3px solid;border-radius:999px;flex-shrink:0;place-items:center;width:48px;height:48px;font-size:15px;font-weight:850;display:grid}.grade-gem{color:var(--accent-strong)}.grade-nm{color:var(--green)}.grade-good{color:var(--amber)}.grade-poor{color:var(--red)}.history-meta{gap:3px;min-width:0;display:grid}.history-meta strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;display:block;overflow:hidden}.history-meta span{color:var(--muted);font-size:12px}.camera-backdrop{z-index:20;background:#1f2933b8;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.camera-panel{border:1px solid var(--line);background:#fff;border-radius:8px;width:min(720px,100%);max-height:min(900px,96vh);overflow:auto;box-shadow:0 24px 70px #00000052}.camera-body{padding:18px}.camera-stage{border:1px solid var(--line);background:#000;border-radius:8px;position:relative;overflow:hidden}.camera-video{object-fit:contain;width:100%;max-height:65vh;display:block}.camera-thirds{pointer-events:none;background-image:linear-gradient(90deg,#ffffff26 1px,#0000 1px),linear-gradient(#ffffff26 1px,#0000 1px);background-size:33.33% 33.33%;position:absolute;inset:0}.camera-coach{letter-spacing:.01em;white-space:nowrap;pointer-events:none;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172ac7;border-radius:999px;align-items:center;gap:8px;max-width:calc(100% - 28px);padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #00000059}.camera-coach--good{background:#0f5a38d1}.camera-coach--warn{background:#92400ed9}.camera-coach-dot{opacity:.85;background:currentColor;border-radius:50%;width:8px;height:8px;display:inline-block}@media print{.topbar,.workspace,.history-panel,.report-header-actions{display:none!important}.app-shell{padding:0}.report-panel{box-shadow:none;border:0;margin-top:0}.report-panel .panel-header{border-bottom:1px solid #ccc}.category-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width:760px){.camera-backdrop{align-items:flex-start;padding:0}.camera-panel{border-radius:0;width:100%;max-height:100dvh}.camera-body{padding:12px}}.field-with-action{align-items:center;gap:8px;display:flex}.field-hint{color:var(--muted);margin:4px 0 0;font-size:12px;line-height:1.4}.field-with-action input{flex:1;min-width:0}.ebay-manual-input{margin-bottom:16px}.ebay-paste-input{flex:1;min-width:0;font-family:monospace;font-size:12px}.ebay-picker-panel{max-width:min(860px,100%)}.ebay-image-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:14px;display:grid}.ebay-thumb-card{border:2px solid var(--line);background:#fbfcfd;border-radius:8px;position:relative;overflow:hidden}.ebay-thumb-card--assigned-front{border-color:var(--accent)}.ebay-thumb-card--assigned-back{border-color:var(--amber)}.ebay-thumb-img{aspect-ratio:1;object-fit:contain;background:#eef2f6;width:100%;display:block}.ebay-thumb-actions{grid-template-columns:1fr 1fr;gap:4px;padding:6px;display:grid}.ebay-thumb-actions .button{min-height:30px;padding:4px 6px;font-size:12px}.ebay-assigned-badge{background:var(--accent);color:#fff;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:700;position:absolute;top:4px;right:4px}.ebay-assigned-badge--back{background:var(--amber)}.ebay-thumb-actions .button.is-selected{background:var(--accent);color:#fff;border-color:var(--accent-strong)}.ebay-finalize-bar{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;padding-top:14px;display:grid}.ebay-finalize-side{flex-direction:column;gap:4px;display:flex}.ebay-finalize-side .button{width:100%}.ebay-finalize-confirm{color:var(--muted);font-size:11px}
