*{box-sizing:border-box}html,body,#root{min-width:20rem;min-height:100%}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:oklch(8% .008 270);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{margin:0;overflow-x:hidden}button,video{-webkit-tap-highlight-color:transparent}::selection{background:oklch(78% .17 78/.38)}:root{--surface-overlay:oklch(16% .01 270/.76);--surface-overlay-strong:oklch(10% .008 270/.88);--surface-border:oklch(100% 0 0/.18);--text-primary:oklch(98% 0 0);--text-secondary:oklch(86% .01 270);--text-muted:oklch(72% .012 270);--status-ready:oklch(78% .18 151);--status-warning:oklch(82% .17 78);--status-error:oklch(72% .2 24);--focus-ring:oklch(92% 0 0);--ease-out-quart:cubic-bezier(.25, 1, .5, 1);--z-media:0;--z-hud:10;--z-overlay:20}.app-shell{min-height:100dvh;color:var(--text-primary);background:oklch(8% .008 270);position:relative;overflow:hidden}.media-stage,.source-video,.detection-canvas,.media-vignette{width:100%;height:100%;position:absolute;inset:0}.media-stage{z-index:var(--z-media);background:oklch(8% .008 270);min-height:30rem}.source-video,.detection-canvas{object-fit:cover;object-position:center}.source-video{display:block}.detection-canvas,.media-vignette{pointer-events:none}.media-vignette{background:linear-gradient(oklch(5% 0 0/.45),#0000 25%),linear-gradient(#0000 66%,oklch(5% 0 0/.58))}.floating-navigation{top:max(1rem, env(safe-area-inset-top));z-index:var(--z-hud);border:1px solid var(--surface-border);background:var(--surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(130%);backdrop-filter:blur(18px)saturate(130%);border-radius:999px;max-width:calc(100vw - 2rem);padding:.375rem;position:fixed;left:50%;transform:translate(-50%)}.navigation-items{align-items:center;gap:.25rem;display:flex}.navigation-button{min-height:2.5rem;color:var(--text-muted);font:inherit;white-space:nowrap;cursor:pointer;transition:background-color .18s var(--ease-out-quart), color .18s var(--ease-out-quart);background:0 0;border:0;border-radius:999px;align-items:center;gap:.5rem;padding:.5rem .875rem;font-size:.875rem;font-weight:600;display:flex}.navigation-button:hover{color:var(--text-primary);background:oklch(100% 0 0/.1)}.navigation-button.is-active,.navigation-button.is-active:hover{background:var(--text-primary);color:oklch(16% .01 270)}.navigation-button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.navigation-icon{flex:none;width:1rem;height:1rem}.analysis-hud{right:0;bottom:calc(4.5rem + env(safe-area-inset-bottom));z-index:var(--z-hud);pointer-events:none;justify-content:space-between;align-items:flex-end;gap:.75rem;padding:1rem;display:flex;position:fixed;left:0}.analysis-status,.detection-count{border:1px solid var(--surface-border);background:var(--surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(130%);backdrop-filter:blur(18px)saturate(130%)}.analysis-status{border-radius:.875rem;width:min(19rem,100vw - 7rem);min-width:0;padding:.75rem 1rem}.status-label{color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;margin:0 0 .25rem;font-size:.6875rem;font-weight:650;display:flex}.status-label-count{color:var(--text-secondary);font-variant-numeric:tabular-nums;letter-spacing:0;text-transform:none;display:none}.status-message{align-items:center;gap:.625rem;min-width:0;display:flex}.status-message p{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.9375rem;font-weight:600;overflow:hidden}.status-icon{width:1.125rem;height:1.125rem;color:var(--text-secondary);flex:none}.status-icon.is-warning{color:var(--status-warning)}.status-icon.is-clear{color:var(--status-ready)}.status-icon.is-error,.overlay-icon.is-error{color:var(--status-error)}.status-icon.is-analyzing,.overlay-icon.is-loading{color:var(--status-warning);animation:1s linear infinite spin}.confidence-value{color:var(--text-muted);margin-left:.5rem;font-weight:550}.detection-count{color:var(--text-secondary);border-radius:999px;flex:none;padding:.625rem .875rem;font-size:.8125rem;font-weight:550}.detection-count span{color:var(--text-primary);font-variant-numeric:tabular-nums}.app-shell.is-image-mode{color:oklch(19% .01 270);background:oklch(96% 0 0);min-height:100dvh;overflow:visible}.image-detector{min-height:100dvh;padding:7.5rem 1.5rem 4rem}.image-detector-content{flex-direction:column;gap:2rem;width:100%;max-width:64rem;margin:0 auto;display:flex}.image-page-header{flex-direction:column;gap:.5rem;max-width:42rem;display:flex}.image-page-kicker{color:oklch(47% .015 270);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:700}.image-page-header h1{color:oklch(16% .01 270);letter-spacing:-.035em;text-wrap:balance;margin:0;font-size:2.25rem;font-weight:680;line-height:1.1}.image-page-header>p:last-child{color:oklch(42% .015 270);text-wrap:pretty;max-width:62ch;margin:.25rem 0 0;font-size:1rem;line-height:1.65}.image-dropzone{color:oklch(20% .012 270);text-align:center;cursor:pointer;min-height:20rem;transition:border-color .18s var(--ease-out-quart), background-color .18s var(--ease-out-quart), transform .18s var(--ease-out-quart);background:oklch(100% 0 0/.72);border:1px dashed oklch(72% .012 270);border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;gap:.625rem;padding:2rem;display:flex}.image-dropzone:hover,.image-dropzone.is-dragging{background:oklch(100% 0 0);border-color:oklch(25% .01 270)}.image-dropzone.is-dragging{transform:scale(1.005)}.image-dropzone:focus-within{outline-offset:3px;outline:2px solid oklch(24% .01 270)}.upload-icon-wrap{color:oklch(98% 0 0);background:oklch(18% .01 270);border-radius:50%;justify-content:center;align-items:center;width:3rem;height:3rem;margin-bottom:.625rem;display:flex}.upload-icon-wrap svg{width:1.25rem;height:1.25rem}.image-dropzone strong{letter-spacing:-.015em;font-size:1rem;font-weight:680}.image-dropzone>span:last-of-type{color:oklch(45% .015 270);font-size:.875rem}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.upload-error{color:oklch(48% .19 25);align-items:center;gap:.5rem;margin:.75rem 0 0;font-size:.875rem;font-weight:600;display:flex}.upload-error svg{width:1rem;height:1rem}.image-workspace{flex-direction:column;gap:1.5rem;display:flex}.image-toolbar{background:oklch(100% 0 0);border:1px solid oklch(90% .008 270);border-radius:.875rem;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem;display:flex}.selected-file{align-items:center;gap:.75rem;min-width:0;display:flex}.image-thumbnail{color:oklch(48% .01 270);background:oklch(94% .006 270);border-radius:.625rem;flex:none;justify-content:center;align-items:center;width:3rem;height:3rem;display:flex;overflow:hidden}.image-thumbnail img{object-fit:cover;width:100%;height:100%}.image-thumbnail svg{width:1.25rem;height:1.25rem}.file-details{flex-direction:column;gap:.1875rem;min-width:0;display:flex}.file-details strong{color:oklch(19% .01 270);text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;font-weight:680;overflow:hidden}.file-details span{color:oklch(48% .012 270);font-size:.75rem}.image-actions{flex:none;align-items:center;gap:.5rem;display:flex}.icon-button,.examine-button{min-height:2.75rem;font:inherit;cursor:pointer;transition:background-color .18s var(--ease-out-quart), color .18s var(--ease-out-quart), transform .18s var(--ease-out-quart);border:0;justify-content:center;align-items:center;display:flex}.icon-button{color:oklch(45% .012 270);background:0 0;border-radius:50%;width:2.75rem;padding:0}.icon-button:hover{color:oklch(18% .01 270);background:oklch(94% .006 270)}.examine-button{color:oklch(98% 0 0);background:oklch(18% .01 270);border-radius:999px;gap:.5rem;padding:.625rem 1rem;font-size:.875rem;font-weight:680}.examine-button:hover{background:oklch(28% .012 270)}.icon-button:active,.examine-button:active{transform:scale(.97)}.icon-button:focus-visible,.examine-button:focus-visible{outline-offset:2px;outline:2px solid oklch(24% .01 270)}.icon-button:disabled,.examine-button:disabled{cursor:not-allowed;opacity:.48;transform:none}.icon-button svg,.examine-button svg{width:1rem;height:1rem}.image-status{color:oklch(31% .02 270);background:oklch(98% .004 270);border:1px solid oklch(87% .02 270);border-radius:.75rem;align-items:center;gap:.625rem;min-height:3.25rem;padding:.75rem 1rem;font-size:.875rem;font-weight:600;display:flex}.image-status svg{flex:none;width:1.125rem;height:1.125rem}.image-status.is-success,.image-status.is-empty{color:oklch(36% .11 151);background:oklch(97% .025 151);border-color:oklch(87% .07 151)}.image-status.is-error{color:oklch(42% .16 25);background:oklch(97% .028 25);border-color:oklch(87% .08 25)}.is-spinning{animation:1s linear infinite spin}.image-preview-section{flex-direction:column;gap:1.5rem;display:flex}.image-preview-frame{background:oklch(12% .008 270);border-radius:1rem;width:100%;position:relative;overflow:hidden}.image-preview-frame>img{width:100%;height:auto;display:block}.image-detection-canvas{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.detection-summary{background:oklch(100% 0 0);border:1px solid oklch(90% .008 270);border-radius:.875rem;padding:1.25rem}.summary-header{border-bottom:1px solid oklch(91% .006 270);justify-content:space-between;align-items:center;gap:1rem;padding-bottom:1rem;display:flex}.summary-header h2{color:oklch(19% .01 270);letter-spacing:-.015em;margin:0;font-size:1rem;font-weight:680}.summary-header>span{color:oklch(30% .015 270);font-variant-numeric:tabular-nums;background:oklch(92% .012 270);border-radius:999px;justify-content:center;align-items:center;min-width:1.75rem;height:1.75rem;font-size:.75rem;font-weight:700;display:flex}.detection-summary ul{max-height:22rem;margin:0;padding:0;list-style:none;overflow-y:auto}.detection-summary li{border-bottom:1px solid oklch(93% .005 270);justify-content:space-between;align-items:center;gap:1rem;padding:.875rem 0;display:flex}.detection-summary li:last-child{border-bottom:0;padding-bottom:0}.detected-class{color:oklch(25% .012 270);align-items:center;gap:.625rem;min-width:0;font-size:.875rem;font-weight:650;display:flex}.class-color{border-radius:50%;flex:none;width:.625rem;height:.625rem}.detection-confidence{color:oklch(45% .015 270);font-variant-numeric:tabular-nums;flex:none;font-size:.8125rem}.system-overlay{z-index:var(--z-overlay);background:var(--surface-overlay-strong);text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.overlay-icon{width:3rem;height:3rem;margin-bottom:1rem}.system-overlay h1{letter-spacing:-.02em;text-wrap:balance;max-width:24ch;margin:0;font-size:1.25rem;font-weight:650}.system-overlay p{width:100%;max-width:31rem;color:var(--text-secondary);text-wrap:pretty;margin:.75rem 0 0;font-size:.875rem;line-height:1.6}.system-overlay button{background:var(--text-primary);color:oklch(16% .01 270);min-height:2.75rem;font:inherit;cursor:pointer;transition:background-color .18s var(--ease-out-quart), transform .18s var(--ease-out-quart);border:0;border-radius:999px;margin-top:1.25rem;padding:.625rem 1rem;font-size:.875rem;font-weight:650}.system-overlay button:hover{background:oklch(90% .006 270)}.system-overlay button:active{transform:scale(.97)}.system-overlay button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}@keyframes spin{to{transform:rotate(1turn)}}@media (width<=40rem){.analysis-hud{bottom:calc(4rem + env(safe-area-inset-bottom));display:block}.analysis-status{width:100%;min-width:0}.detection-count{display:none}.status-label-count{display:inline}.image-detector{padding:6.5rem 1rem 3rem}.image-detector-content{gap:1.5rem}.image-page-header h1{font-size:1.875rem}.image-dropzone{min-height:16rem}.image-toolbar{align-items:flex-start}.examine-button span{display:none}.examine-button{width:2.75rem;padding:0}.detection-summary li{flex-direction:column;align-items:flex-start;gap:.375rem}.detection-confidence{padding-left:1.25rem}}@media (width<=27rem){.analysis-status{min-width:0}.navigation-button{padding-inline:.75rem;font-size:.8125rem}}@media (prefers-reduced-motion:reduce){.status-icon.is-analyzing,.overlay-icon.is-loading,.is-spinning{animation:none}.system-overlay button,.navigation-button,.image-dropzone,.icon-button,.examine-button{transition:none}}
