*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:var(--cj-paper);--surface:var(--cj-surface);--elevated:var(--cj-soft);--border:var(--cj-line);--accent:var(--cj-accent);--accent-hi:var(--cj-accent);--accent-lo:color-mix(in srgb, var(--cj-accent) 82%, var(--cj-ink));--text-1:var(--cj-ink);--text-2:var(--cj-muted);--text-3:var(--cj-muted);--success:var(--cj-accent);--error:var(--cj-danger);--radius-sm:.5rem;--radius:.75rem;--radius-lg:1rem;--shadow:var(--cj-shadow);--shadow-sm:0 1px 3px color-mix(in srgb, var(--cj-ink) 12%, transparent)}body{font-family:var(--cj-sans);background:var(--bg);color:var(--text-1);min-height:100dvh;line-height:1.5}.app{flex-direction:column;min-height:100dvh;display:flex}.header{text-align:center;padding:2rem 2rem 1.4rem;position:relative}.header:after{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);width:80px;height:2px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.header-inner{display:inline-block;position:relative}.header h1{letter-spacing:-.045em;color:var(--text-1);font-size:clamp(2rem,5vw,2.8rem);font-weight:800;line-height:1.15}.header p{color:var(--text-2);margin-top:.4rem;font-size:.88rem}.header .eyebrow{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;margin:0 0 .7rem;font-size:11px;font-weight:600}.model-selector{background:var(--elevated);border:1px solid var(--border);border-radius:9999px;align-items:center;gap:2px;margin-top:.65rem;padding:3px;display:inline-flex}.model-btn{color:var(--text-3);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:9999px;padding:.26rem .9rem;font-size:.75rem;font-weight:600;transition:background .2s,color .2s,box-shadow .2s}.model-btn:hover:not(:disabled){color:var(--text-2)}.history-toggle{background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);color:var(--accent-hi);cursor:pointer;border-radius:9999px;align-items:center;gap:.35rem;margin-top:.7rem;padding:.28rem .75rem;font-size:.75rem;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.history-toggle:hover{background:color-mix(in srgb, var(--accent) 20%, transparent);border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.model-selector{background:var(--elevated);border:1px solid var(--border);border-radius:9999px;gap:.1rem;margin-top:.7rem;padding:.22rem;display:inline-flex}.model-btn{color:var(--text-2);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;letter-spacing:.01em;background:0 0;border:none;border-radius:9999px;align-items:center;gap:.3rem;padding:.3rem .9rem;font-size:.78rem;font-weight:600;transition:background .18s,color .18s,box-shadow .18s;display:inline-flex}.model-btn:hover:not(:disabled){color:var(--text-1);background:color-mix(in srgb, var(--accent) 10%, transparent)}.model-btn.active{background:var(--accent);color:var(--cj-on-accent);box-shadow:0 2px 10px color-mix(in srgb, var(--accent) 40%, transparent)}.model-btn:disabled{opacity:.45;cursor:not-allowed}.main{flex:1;width:100%;max-width:1300px;margin:0 auto;padding:1.5rem 2rem 3rem}.history-panel{background:var(--surface);border-bottom:1px solid var(--border);padding:1rem 2rem;animation:.25s slideDown}.history-header{color:var(--text-2);justify-content:space-between;align-items:center;margin-bottom:.75rem;font-size:.85rem;font-weight:700;display:flex}.history-close{color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:.3rem;padding:.1rem .3rem;font-size:.9rem;transition:color .15s}.history-close:hover{color:var(--text-1)}.history-grid{flex-wrap:wrap;gap:.65rem;display:flex}.history-card{background:var(--elevated);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:.6rem;max-width:240px;padding:.5rem .7rem;transition:border-color .15s,background .15s;display:flex;position:relative}.history-card:hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.history-thumb{object-fit:cover;border-radius:.3rem;flex-shrink:0;width:44px;height:44px}.history-meta{flex-direction:column;gap:.15rem;min-width:0;display:flex}.history-filename{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;max-width:120px;font-size:.75rem;font-weight:600;overflow:hidden}.history-row{align-items:center;gap:.4rem;display:flex}.history-count{color:var(--accent-hi);font-size:.68rem}.history-time{color:var(--text-3);font-size:.68rem}.history-del{color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:.25rem;padding:.15rem .25rem;font-size:.65rem;transition:color .15s,background .15s;position:absolute;top:.3rem;right:.3rem}.history-del:hover{color:var(--error);background:color-mix(in srgb, var(--error) 12%, transparent)}.camera-overlay{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000c;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.camera-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;max-width:90vw;max-height:85dvh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0009}.camera-video{object-fit:contain;background:#000;width:100%;max-height:65dvh;display:block}.camera-actions{justify-content:center;align-items:center;gap:1rem;padding:1rem 1.5rem;display:flex}.camera-btn{cursor:pointer;border:1px solid #0000;border-radius:9999px;align-items:center;gap:.45rem;padding:.6rem 1.4rem;font-size:.88rem;font-weight:600;transition:all .15s;display:inline-flex}.camera-btn.cancel{background:var(--elevated);border-color:var(--border);color:var(--text-2)}.camera-btn.cancel:hover{color:var(--text-1);border-color:var(--cj-soft-2)}.camera-btn.capture{background:var(--accent);color:var(--cj-on-accent);box-shadow:0 2px 12px color-mix(in srgb, var(--accent) 40%, transparent)}.camera-btn.capture:hover{background:var(--accent-lo);transform:translateY(-1px)}.camera-shutter{background:#fff;border:3px solid #fff6;border-radius:50%;width:1rem;height:1rem;display:inline-block}.upload-area{flex-direction:column;align-items:stretch;gap:.85rem;display:flex}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-lg);cursor:pointer;background:var(--surface);flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:4.5rem 2rem;transition:border-color .25s,background .25s,transform .2s,box-shadow .2s;animation:.4s fadeIn;display:flex}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, transparent);box-shadow:0 8px 25px color-mix(in srgb, var(--accent) 15%, transparent);transform:translateY(-2px)scale(1.02)}.dropzone-icon{background:color-mix(in srgb, var(--accent) 12%, transparent);border-radius:50%;justify-content:center;align-items:center;width:3.5rem;height:3.5rem;transition:transform .25s;display:flex}.dropzone:hover .dropzone-icon{transform:translateY(-4px)scale(1.1)}.dropzone-icon svg{width:1.7rem;height:1.7rem;color:var(--accent-hi)}.dropzone-text{color:var(--text-1);font-size:1.05rem;font-weight:600}.dropzone-sub{color:var(--text-3);letter-spacing:.04em;font-size:.8rem}.camera-open-btn{border-radius:var(--radius);background:var(--surface);border:1px dashed var(--border);color:var(--text-2);cursor:pointer;justify-content:center;align-items:center;gap:.5rem;padding:.7rem;font-size:.88rem;font-weight:500;transition:all .2s;display:flex}.camera-open-btn:hover{border-color:var(--accent);color:var(--accent-hi);background:color-mix(in srgb, var(--accent) 6%, transparent)}.center-card{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);text-align:center;flex-direction:column;align-items:center;gap:.85rem;padding:4.5rem 2rem;animation:.4s fadeIn;display:flex}.error-icon{background:color-mix(in srgb, var(--error) 15%, transparent);border:2px solid color-mix(in srgb, var(--error) 30%, transparent);width:3rem;height:3rem;color:var(--error);border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;font-weight:700;display:flex}.error-icon.sm{border-width:1.5px;flex-shrink:0;width:1.4rem;height:1.4rem;font-size:.7rem}.loading-title{font-size:1.1rem;font-weight:700}.loading-step{color:var(--text-2);word-break:break-all;max-width:340px;font-size:.84rem}.loading-count{color:var(--text-3);font-size:.77rem}.progress-bar{background:var(--elevated);border-radius:3px;width:260px;height:5px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent-lo), var(--accent-hi));border-radius:3px;height:100%;transition:width .35s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.progress-fill:after{content:"";background:linear-gradient(90deg,#0000,#ffffff40,#0000);animation:1.4s infinite progressShimmer;position:absolute;inset:0}.result-layout{grid-template-columns:1fr 340px;align-items:start;gap:1.5rem;animation:.3s fadeIn;display:grid}@media (width<=860px){.result-layout{grid-template-columns:1fr}}.image-col{flex-direction:column;gap:.7rem;display:flex}.image-wrap{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);line-height:0;position:relative;overflow:hidden}.preview-img{border-radius:var(--radius);width:100%;height:auto;transition:transform .3s,filter .3s;display:block}.overlay-canvas{pointer-events:none;border-radius:var(--radius);position:absolute;inset:0}.overlay-canvas.roi-mode{pointer-events:auto;cursor:crosshair}.img-overlay{background:color-mix(in srgb, var(--cj-paper) 70%, transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:var(--text-1);border-radius:var(--radius);flex-direction:column;justify-content:center;align-items:center;gap:.7rem;font-size:.92rem;font-weight:500;display:flex;position:absolute;inset:0}.tool-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.55rem;padding:.8rem 1rem;display:flex}.tool-header{color:var(--text-2);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:.4rem;font-size:.76rem;font-weight:600;display:flex}.tool-header svg{color:var(--accent-hi);flex-shrink:0}.tool-reset{border:1px solid var(--border);color:var(--text-3);cursor:pointer;background:0 0;border-radius:.35rem;margin-left:auto;padding:.15rem .5rem;font-size:.68rem;transition:all .15s}.tool-reset:hover{background:color-mix(in srgb, var(--error) 10%, transparent);border-color:color-mix(in srgb, var(--error) 40%, transparent);color:var(--error)}.rot-controls{align-items:center;gap:.35rem;display:flex}.rot-btn{background:var(--elevated);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:.18rem;padding:.28rem .55rem;font-size:.73rem;font-weight:600;transition:background .15s,color .15s,border-color .15s,transform .1s;display:inline-flex}.rot-btn:hover{background:var(--cj-soft-2);color:var(--text-1);border-color:var(--accent);transform:translateY(-1px)}.rot-btn:active{transform:translateY(0)scale(.95)}.rot-btn.sm{padding:.24rem .4rem}.rot-angle{text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);flex:1;padding:.28rem .4rem}.rot-value{font-variant-numeric:tabular-nums;color:var(--accent-hi);font-size:.88rem;font-weight:700}.slider-row{align-items:center;gap:.55rem;display:flex}.slider-label{color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.67rem}.slider-val{color:var(--accent-hi);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;min-width:2.8rem;font-size:.72rem}.rot-slider{appearance:none;background:var(--elevated);cursor:pointer;border-radius:2px;outline:none;flex:1;height:4px}.rot-slider::-webkit-slider-runnable-track{background:var(--elevated);border-radius:2px;height:4px}.rot-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-hi);border:2px solid var(--bg);width:15px;height:15px;box-shadow:0 0 0 2px var(--accent);cursor:pointer;border-radius:50%;margin-top:-5.5px;transition:transform .15s,box-shadow .15s}.rot-slider::-webkit-slider-thumb:hover{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 40%, transparent);transform:scale(1.2)}.rot-slider::-moz-range-thumb{background:var(--accent-hi);border:2px solid var(--bg);width:15px;height:15px;box-shadow:0 0 0 2px var(--accent);cursor:pointer;border-radius:50%}.rot-reset{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-2);cursor:pointer;background:0 0;align-self:flex-end;padding:.22rem .6rem;font-size:.73rem;transition:all .15s}.rot-reset:hover{background:color-mix(in srgb, var(--error) 10%, transparent);border-color:color-mix(in srgb, var(--error) 40%, transparent);color:var(--error)}.image-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.actions-spacer{flex:1}.btn-primary{background:var(--accent);color:var(--cj-on-accent);border-radius:var(--radius-sm);cursor:pointer;box-shadow:0 2px 12px color-mix(in srgb, var(--accent) 35%, transparent);border:none;align-items:center;gap:.4rem;padding:.52rem 1.2rem;font-size:.85rem;font-weight:600;transition:background .15s,transform .15s,box-shadow .15s;display:inline-flex}.btn-primary:hover{background:var(--accent-lo);box-shadow:0 4px 18px color-mix(in srgb, var(--accent) 50%, transparent);transform:translateY(-1px)}.btn-primary:active{box-shadow:0 2px 8px color-mix(in srgb, var(--accent) 35%, transparent);transform:translateY(0)scale(.98)}.btn-ghost{color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:0 0;align-items:center;gap:.3rem;padding:.42rem .85rem;font-size:.8rem;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn-ghost:hover{background:var(--elevated);border-color:var(--cj-soft-2);color:var(--text-1)}.queue-next{color:var(--accent-hi);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.roi-hint{color:var(--text-3);text-align:center;padding:.1rem 0;font-size:.77rem;line-height:1.5}.results-panel{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-sm);flex-direction:column;gap:.65rem;padding:1.1rem;display:flex;position:sticky;top:1rem}.panel-header{border-bottom:1px solid var(--border);align-items:center;gap:.45rem;padding-bottom:.6rem;display:flex}.panel-title{color:var(--text-1);font-size:.92rem;font-weight:700}.badge{background:var(--accent);color:var(--cj-on-accent);border-radius:9999px;padding:.1rem .48rem;font-size:.68rem;font-weight:700}.select-actions{gap:.28rem;margin-left:auto;display:flex}.select-btn{border:1px solid var(--border);color:var(--text-2);cursor:pointer;background:0 0;border-radius:.4rem;padding:.18rem .5rem;font-size:.7rem;transition:background .15s,color .15s}.select-btn:hover{background:var(--elevated);color:var(--text-1)}.search-row{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:.4rem;padding:.35rem .6rem;transition:border-color .15s;display:flex}.search-row:focus-within{border-color:var(--accent)}.search-input{color:var(--text-1);background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:.82rem}.search-input::placeholder{color:var(--text-3)}.search-clear{color:var(--text-3);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:.1rem;font-size:.72rem;transition:color .15s}.search-clear:hover{color:var(--text-1)}.threshold-row{align-items:center;gap:.5rem;display:flex}.threshold-label{color:var(--text-3);white-space:nowrap;font-size:.72rem}.threshold-val{color:var(--accent-hi);font-variant-numeric:tabular-nums;text-align:right;min-width:2.2rem;font-size:.72rem}.panel-status{text-align:center;color:var(--text-2);flex-direction:column;align-items:center;gap:.6rem;padding:2.5rem 1rem;font-size:.87rem;display:flex}.panel-status.muted{color:var(--text-3)}.panel-status.error{color:var(--error);text-align:left;word-break:break-word;flex-direction:row;gap:.45rem;padding:1.2rem 0;font-size:.84rem}.result-list{flex-direction:column;gap:.3rem;max-height:48vh;padding-right:.2rem;list-style:none;display:flex;overflow-y:auto}.result-list::-webkit-scrollbar{width:3px}.result-list::-webkit-scrollbar-track{background:0 0}.result-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.result-item{border-radius:var(--radius-sm);cursor:pointer;background:var(--bg);animation:.3s both slideInItem;animation-delay:var(--delay,0s);border:1px solid #0000;align-items:center;gap:.5rem;padding:.45rem .6rem;transition:background .15s,border-color .15s,transform .1s,box-shadow .15s;display:flex}.result-item:hover{background:var(--cj-soft);transform:translate(2px)scale(1.01);box-shadow:0 2px 8px #0000001a}.result-item.selected{background:color-mix(in srgb, var(--accent) 8%, transparent);border-color:color-mix(in srgb, var(--accent) 35%, transparent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent)}.item-check{width:.85rem;color:var(--accent-hi);text-align:center;flex-shrink:0;font-size:.7rem;font-weight:700}.item-index{width:1.3rem;height:1.3rem;color:var(--cj-on-accent);border-radius:.28rem;flex-shrink:0;justify-content:center;align-items:center;font-size:.65rem;font-weight:700;display:flex}.item-text{word-break:break-all;color:var(--text-1);flex:1;font-size:.85rem;line-height:1.4}.item-score{color:var(--text-3);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.68rem}.item-edit-input{background:var(--elevated);border:1px solid var(--accent);color:var(--text-1);border-radius:.3rem;outline:none;flex:1;padding:.18rem .4rem;font-size:.85rem}.item-copy{color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:.3rem;flex-shrink:0;align-items:center;padding:.15rem;transition:color .15s,background .15s;display:flex}.item-copy:hover{color:var(--accent-hi);background:color-mix(in srgb, var(--accent) 10%, transparent)}.copy-btn{background:var(--elevated);width:100%;color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.55rem;font-size:.82rem;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:flex}.copy-btn:hover{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent-hi);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.copy-btn.copied{background:color-mix(in srgb, var(--success) 12%, transparent);color:var(--success);border-color:color-mix(in srgb, var(--success) 30%, transparent)}.export-row{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:.4rem;padding:.4rem .55rem;display:flex}.export-label{color:var(--text-3);flex:1;font-size:.72rem}.export-btn{background:var(--elevated);border:1px solid var(--border);color:var(--text-2);cursor:pointer;border-radius:.35rem;padding:.22rem .55rem;font-size:.72rem;font-weight:600;transition:background .15s,color .15s,border-color .15s}.export-btn:hover{background:color-mix(in srgb, var(--accent) 15%, transparent);color:var(--accent-hi);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.analyze-btn{background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 15%, transparent), color-mix(in srgb, var(--accent) 15%, transparent));width:100%;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.58rem;font-size:.82rem;font-weight:600;transition:background .2s,color .2s,border-color .2s,transform .1s;display:flex}.analyze-btn:hover:not(:disabled){background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 28%, transparent), color-mix(in srgb, var(--accent) 22%, transparent));color:var(--accent);border-color:color-mix(in srgb, var(--accent) 50%, transparent);transform:translateY(-1px)}.analyze-btn:disabled{opacity:.6;cursor:not-allowed}.summary-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:1.4rem;padding:1.2rem 1.35rem;animation:.35s fadeIn}.summary-header{color:var(--text-2);letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--border);align-items:center;gap:.45rem;margin-bottom:.9rem;padding-bottom:.8rem;font-size:.83rem;font-weight:600;display:flex}.summary-header svg{color:var(--accent)}.summary-badge{background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 25%, transparent);border-radius:9999px;margin-left:auto;padding:.13rem .5rem;font-size:.67rem;font-weight:700}.summary-badge.error{background:color-mix(in srgb, var(--error) 12%, transparent);color:var(--error);border-color:color-mix(in srgb, var(--error) 20%, transparent)}.summary-tag{color:var(--text-3);margin-left:auto;font-size:.71rem}.summary-model-loading{flex-direction:column;align-items:center;gap:.55rem;padding:.9rem 0;display:flex}.model-load-msg{color:var(--text-2);text-align:center;max-width:520px;font-size:.82rem}.model-load-bar{background:var(--elevated);border-radius:3px;width:100%;max-width:420px;height:5px;overflow:hidden}.model-load-fill{background:linear-gradient(90deg, var(--accent), var(--accent));border-radius:3px;height:100%;transition:width .3s;position:relative;overflow:hidden}.model-load-fill:after{content:"";background:linear-gradient(90deg,#0000,#ffffff4d,#0000);animation:1.2s infinite progressShimmer;position:absolute;inset:0}.model-load-pct{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:.74rem}.summary-text{color:var(--text-1);white-space:pre-wrap;word-break:break-word;margin:0;font-family:inherit;font-size:.87rem;line-height:1.75}.summary-error{color:var(--error);background:color-mix(in srgb, var(--error) 8%, transparent);border:1px solid color-mix(in srgb, var(--error) 20%, transparent);border-radius:var(--radius-sm);word-break:break-word;padding:.75rem;font-size:.85rem}.cursor-blink{color:var(--accent);animation:.8s step-end infinite blink}.spinner{border:2px solid var(--border);border-top-color:var(--accent-hi);border-radius:50%;flex-shrink:0;width:1.2rem;height:1.2rem;animation:.7s linear infinite spin;display:inline-block}.spinner.lg{border-width:3px;width:2.4rem;height:2.4rem}.spinner.sm{border-width:2px;width:.85rem;height:.85rem}@media (width<=1024px){.header{padding:1.5rem 1.5rem 1rem}.header h1{font-size:1.8rem}.main{padding:1rem 1.5rem 2rem}.result-layout{grid-template-columns:1fr 300px;gap:1rem}.results-panel{position:static}}@media (width<=768px){.header{padding:1rem 1rem .8rem}.header h1{font-size:1.5rem}.header p{font-size:.8rem}.model-selector{margin-top:.55rem}.model-btn{padding:.25rem .7rem;font-size:.74rem}.main{padding:.8rem 1rem 1.5rem}.result-layout{grid-template-columns:1fr;gap:1rem}.results-panel{max-width:none;position:static}.dropzone{padding:3rem 1.5rem}.dropzone-text{font-size:.95rem}.dropzone-sub{font-size:.75rem}.center-card{padding:3rem 1.5rem}.tool-card{padding:.7rem .8rem}.image-actions{flex-direction:column;gap:.4rem}.btn-primary,.btn-ghost{padding:.45rem 1rem;font-size:.8rem}.rot-controls{flex-wrap:wrap}.rot-btn{padding:.25rem .45rem;font-size:.7rem}.rot-angle{padding:.25rem .35rem}.slider-row{flex-direction:column;align-items:stretch;gap:.4rem}.search-row{padding:.3rem .5rem}.search-input{font-size:.78rem}.result-list{max-height:40vh}.result-item{padding:.4rem .5rem}.item-text{font-size:.8rem}.summary-section{margin-top:1rem;padding:1rem}.summary-text{font-size:.82rem}.camera-modal{max-width:95vw;max-height:90dvh}.camera-actions{gap:.8rem;padding:.8rem 1rem}.camera-btn{padding:.5rem 1.1rem;font-size:.8rem}.history-grid{gap:.5rem}.history-card{max-width:none;padding:.4rem .6rem}.history-thumb{width:38px;height:38px}.history-filename{max-width:100px;font-size:.7rem}.history-count,.history-time{font-size:.65rem}}@media (width<=480px){.header h1{font-size:1.3rem}.dropzone{padding:2.5rem 1rem}.dropzone-icon{width:3rem;height:3rem}.dropzone-icon svg{width:1.5rem;height:1.5rem}.center-card{padding:2.5rem 1rem}.tool-card{padding:.6rem .7rem}.btn-primary,.btn-ghost{padding:.4rem .9rem;font-size:.75rem}.rot-btn{padding:.22rem .4rem;font-size:.68rem}.search-row{padding:.25rem .45rem}.result-item{padding:.35rem .45rem}.summary-section{padding:.8rem}.camera-modal{max-width:98vw}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInItem{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes shimmerText{0%{background-position:0%}to{background-position:200%}}@keyframes progressShimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@media (width<=768px){.header{padding:1.4rem 1rem 1.1rem}.header h1{font-size:1.9rem}.header p{padding:0 .5rem;font-size:.88rem}.btn-primary,.btn-ghost,.model-btn,.history-toggle,.camera-open-btn,.copy-btn,.export-btn,.summary-btn,.rot-reset,.tool-reset{min-height:44px}.btn-primary,.btn-ghost{padding:.55rem 1.1rem;font-size:.88rem}.model-btn{padding:.45rem 1rem;font-size:.82rem}.rot-btn{min-width:40px;min-height:40px}.item-copy{min-width:36px;min-height:36px}.result-item{padding:.6rem}.image-actions{flex-flow:wrap}.image-actions>*{flex:140px}}.header .eyebrow{align-items:center;gap:6px;display:inline-flex}.header .eyebrow .cj-ic{width:14px;height:14px}.header h1{word-break:keep-all;text-wrap:balance;font-size:clamp(1.7rem,4vw,2.5rem)}.header p{word-break:keep-all}@media (width<=768px){.header h1{font-size:1.55rem}}
