:root{color:#20282c;background:#edf2f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;letter-spacing:0;--ink: #20282c;--muted: #657177;--surface: #ffffff;--line: #d5ddda;--green: #16745f;--green-dark: #0f5a49;--green-soft: #dff1eb;--coral: #d85745;--coral-dark: #ad3c2f;--yellow: #f2c14e;--error: #b83232;--error-soft: #fde8e7}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}html{-webkit-text-size-adjust:100%}body{min-height:100vh;min-height:100dvh}button,input{font:inherit;letter-spacing:0}button{border:0;touch-action:manipulation}button:focus-visible{outline:3px solid rgba(242,193,78,.9);outline-offset:2px}.app-shell{min-height:100vh;min-height:100dvh;padding-bottom:calc(28px + env(safe-area-inset-bottom))}.app-header{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:14px;min-height:88px;padding:14px max(clamp(18px,4vw,52px),env(safe-area-inset-right)) 14px max(clamp(18px,4vw,52px),env(safe-area-inset-left));color:var(--ink);background:var(--surface);border-bottom:1px solid var(--line)}.brand-mark{display:grid;width:44px;height:44px;place-items:center;color:#fff;background:var(--coral);border-radius:8px}.title-group{min-width:0}.title-group h1{max-width:860px;margin:0;overflow-wrap:anywhere;font-size:1.3rem;line-height:1.25;letter-spacing:0}.title-group p{margin:4px 0 0;color:var(--muted);font-size:.9rem}.status-band{display:flex;flex-wrap:wrap;gap:10px 22px;padding:10px max(clamp(18px,4vw,52px),env(safe-area-inset-right)) 10px max(clamp(18px,4vw,52px),env(safe-area-inset-left));background:#273238;color:#fff}.status-item{display:inline-flex;align-items:center;gap:7px;min-height:30px;font-size:.84rem;font-weight:650}.status-item svg{flex:0 0 auto}.status-ok svg{color:#63d4ad}.status-neutral svg{color:var(--yellow)}.status-error svg{color:#ff8d82}.error-banner{max-width:1440px;margin:14px auto -2px;padding:11px 16px;color:#7d1c1c;background:var(--error-soft);border:1px solid #efb7b2;border-radius:6px;font-size:.9rem;font-weight:650}.workspace{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.72fr);gap:18px;width:min(1440px,calc(100% - 36px));margin:22px auto 0}.camera-column{min-width:0}.camera-panel,.prediction-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px #20282c12}.camera-panel{overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:72px;padding:13px 16px;border-bottom:1px solid var(--line)}.panel-heading h2{margin:2px 0 0;font-size:1.06rem;line-height:1.3;letter-spacing:0}.panel-kicker{margin:0;color:var(--coral-dark);font-size:.72rem;font-weight:800;text-transform:uppercase}.detector-label{color:var(--muted);font-size:.78rem;font-weight:650;text-align:right}.camera-viewport{position:relative;width:100%;aspect-ratio:16 / 9;overflow:hidden;background:#111719}.camera-viewport video,.landmarks-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.camera-viewport video{background:#111719}.landmarks-overlay{pointer-events:none}.is-mirrored{transform:scaleX(-1)}.camera-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;gap:9px;color:#dce4e1;background:#182024}.camera-placeholder svg{color:var(--yellow)}.camera-placeholder p{margin:0;font-weight:700}.camera-controls{display:flex;flex-wrap:wrap;align-items:center;gap:9px;min-height:66px;margin-top:12px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.button,.icon-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border-radius:6px;cursor:pointer;transition:background-color .16s ease,color .16s ease,border-color .16s ease}.button{gap:8px;padding:9px 14px;font-size:.9rem;font-weight:750}.button-primary{color:#fff;background:var(--green)}.button-primary:hover:not(:disabled){background:var(--green-dark)}.button-secondary{color:var(--ink);background:#f4f6f5;border:1px solid #cbd4d1}.button-secondary:hover:not(:disabled){background:#e8edeb}.button:disabled{cursor:not-allowed;opacity:.48}.icon-button{width:44px;flex:0 0 44px;color:var(--ink);background:#fff;border:1px solid #cbd4d1}.icon-button:hover{color:var(--coral-dark);background:#fff4f2;border-color:#e4aaa1}.icon-button[aria-pressed=true]{color:var(--green-dark);background:var(--green-soft);border-color:#8cc9b8}.icon-button:disabled{cursor:not-allowed;opacity:.45}.prediction-panel{align-self:start;overflow:hidden}.prediction-heading .icon-button{min-height:38px;width:38px;flex-basis:38px}.recognized-sign{display:flex;min-height:300px;padding:28px 18px;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#f3f6f5;border-bottom:1px solid var(--line);text-align:center}.recognized-sign.is-stable{background:var(--green-soft)}.recognized-symbol{display:grid;width:min(190px,80%);min-height:150px;place-items:center;max-width:100%;overflow-wrap:anywhere;color:var(--ink);font-size:7rem;font-variant-numeric:tabular-nums;font-weight:850;line-height:1;letter-spacing:0}.stability-label{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:1.02rem;font-weight:750}.is-stable .stability-label{color:var(--green-dark)}.technical-details{color:var(--muted);background:#fff}.technical-details summary{padding:14px 18px;cursor:pointer;font-size:.8rem;font-weight:700;list-style-position:inside}.technical-details[open] summary{color:var(--ink);border-bottom:1px solid var(--line)}.technical-details dl{display:grid;gap:9px;margin:0;padding:14px 18px 18px}.technical-details dl div{display:flex;align-items:baseline;justify-content:space-between;gap:14px}.technical-details dt,.technical-details dd{margin:0;font-size:.78rem}.technical-details dd{color:var(--ink);font-weight:750;white-space:nowrap}@media(max-width:960px){.app-header{grid-template-columns:44px minmax(0,1fr)}.workspace{grid-template-columns:1fr}.prediction-panel{width:100%}}@media(max-width:620px){.app-header{grid-template-columns:40px minmax(0,1fr);min-height:76px;gap:11px;padding:10px max(14px,env(safe-area-inset-right)) 10px max(14px,env(safe-area-inset-left))}.brand-mark{width:40px;height:40px}.title-group h1{font-size:1rem;line-height:1.2}.title-group p{display:none}.status-band{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:8px max(10px,env(safe-area-inset-right)) 8px max(10px,env(safe-area-inset-left))}.status-item{align-items:flex-start;min-width:0;min-height:42px;gap:5px;font-size:.72rem;line-height:1.25}.status-item span{min-width:0;overflow-wrap:anywhere}.error-banner{width:calc(100% - 28px);margin-top:12px}.workspace{width:calc(100% - 20px);margin-top:12px;gap:12px}.panel-heading{min-height:64px;padding:10px 12px}.camera-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px 44px 44px;padding:9px}.button{min-width:0;padding:8px 9px;font-size:.78rem}.button svg{display:none}.recognized-symbol{min-height:96px;font-size:5.5rem}.recognized-sign{min-height:190px;padding:20px 14px;gap:12px}.technical-details summary{min-height:44px}}@media(max-width:520px){.camera-controls{grid-template-columns:repeat(6,minmax(0,1fr))}.camera-controls .button{grid-column:span 3}.camera-controls .icon-button{grid-column:span 2;width:100%}}@media(max-width:360px){.title-group h1{font-size:.92rem}.panel-heading{gap:8px}.detector-label{max-width:110px;font-size:.72rem}.button{font-size:.74rem}}@media(max-height:600px)and (orientation:landscape)and (max-width:960px){.app-header{min-height:62px;padding-top:8px;padding-bottom:8px}.title-group h1{font-size:.95rem}.title-group p{display:none}.status-band{display:flex;padding-top:6px;padding-bottom:6px}.status-item{min-height:30px}.workspace{grid-template-columns:minmax(0,1.45fr) minmax(220px,.7fr)}.recognized-sign{min-height:180px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
