:root{--blue: #0087b7;--blue-dark: #006f97;--green: #00bfb6;--green-dark: #008b85;--magenta: #c7017f;--orange: #ec6607;--ink: #000000;--muted: #7d7d7d;--line: #cccccc;--line-soft: #e6e6e6;--surface-muted: #f2f2f2;--bg: #f8f8f8;--panel: #ffffff;--shadow: 0 6px 18px rgba(0, 0, 0, .08);--histogram-line-top-centered: 32px;--histogram-line-top-shifted: 12px;--histogram-label-offset: 18px;font-family:Roboto,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--ink)}button,input{font:inherit}button:focus-visible,input:focus-visible{outline:3px solid rgba(0,135,183,.35);outline-offset:2px}.page{max-width:1440px;margin:0 auto;padding:32px}.hero{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;padding-bottom:22px;border-bottom:1px solid var(--line-soft)}.hero-brand{display:flex;gap:18px;align-items:center}.hero-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-left:auto}.hero-logo{width:84px;height:84px;object-fit:contain}.hero h1,.empty-state h2{margin:0;font-family:Roboto Condensed,Arial Narrow,sans-serif;font-weight:700}.hero-copy{margin:6px 0 0;color:var(--muted)}.hero-subtitle{margin:0 0 7px;color:var(--blue);font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.eyebrow{margin:0 0 6px;color:var(--green-dark);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.onepage-grid{display:grid;grid-template-columns:360px minmax(0,1fr);gap:24px;align-items:start}.controls-card{align-self:start}.controls-card,.workspace-card{background:var(--panel);border:1px solid var(--line-soft);border-radius:10px;box-shadow:var(--shadow)}.workspace-card-results{align-self:start;padding:0;background:transparent;border:0;box-shadow:none}.language-toggle{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line-soft);border-radius:999px;background:#fff;box-shadow:var(--shadow)}.language-option{min-width:46px;min-height:34px;border:0;border-radius:999px;background:transparent;color:var(--ink);cursor:pointer;font-size:.86rem;font-weight:800}.language-option-active{background:var(--blue);color:#fff}.health{padding:8px 12px;border:1px solid var(--line-soft);border-radius:4px;font-weight:600;background:#fff;box-shadow:var(--shadow)}.health-ok{color:var(--green-dark)}.health-error{color:#9d3a1f}.onepage-grid{display:grid;grid-template-columns:360px minmax(0,1fr);gap:20px;align-items:start}.dataset-reference{margin-top:24px;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:left;gap:4px;text-align:left;font-size:.82rem;color:var(--muted)}.dataset-reference strong{color:var(--text)}.dataset-reference a{color:var(--blue);text-decoration:none}.dataset-reference a:hover{text-decoration:underline}.controls-card{padding:24px;border-top:4px solid var(--blue)}.controls-block+.controls-block{margin-top:18px}.block-label{display:block;margin-bottom:10px;font-size:.94rem;font-weight:700}.button-row{display:grid;gap:8px}.button{position:relative;display:inline-flex;justify-content:center;align-items:center;gap:8px;border:0;border-radius:5px;padding:12px 16px;cursor:pointer;text-align:center}.button input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.button-soft{border:1px solid var(--blue);background:#fff;color:var(--blue)}.button-primary{background:var(--blue);color:#fff}.button:hover:not(:disabled){filter:brightness(.94)}.button:disabled{cursor:not-allowed;opacity:.55}.segmented{display:flex;gap:6px;flex-wrap:wrap}.segment{border:0;border:1px solid var(--line);border-radius:5px;padding:10px 14px;background:#fff;color:var(--ink);cursor:pointer}.segment-active{border-color:var(--green);background:var(--green);color:#fff}.distance-field,.zoom-control{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:5px;background:#fff;padding:10px 12px}.distance-field input{width:100px;border:0;outline:none}.zoom-control input{flex:1;accent-color:var(--blue)}.run-button{width:100%;margin-top:18px}.advanced-block{border-top:1px solid var(--line);padding-top:18px}.advanced-toggle{width:100%;border:1px solid var(--line);border-radius:5px;padding:12px 14px;background:#fff;color:var(--ink);cursor:pointer;font-weight:700;text-align:left}.advanced-toggle-open{border-color:var(--green);background:#00bfb614}.advanced-panel{margin-top:14px}.advanced-field{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:5px;background:#fff;padding:10px 12px}.advanced-field+.block-label{margin-top:14px}.advanced-field input{flex:1;accent-color:var(--orange)}.error-banner{margin-top:16px;border:1px solid var(--magenta);border-radius:5px;background:#fff5fb;color:var(--magenta);padding:12px 14px}.error-banner-close{flex:0 0 auto;border:0;background:transparent;font:inherit;font-size:1.25rem;line-height:1;cursor:pointer}.inline-disclaimer{margin-top:14px;padding:14px 16px;border-radius:5px;background:#fff8f2;border:1px solid rgba(236,102,7,.45);color:var(--ink)}.inline-disclaimer-title{margin-bottom:8px;color:var(--orange);font-size:.95rem;font-weight:800}.inline-disclaimer p{margin:0;font-size:.88rem;line-height:1.45}.inline-disclaimer p+p{margin-top:8px}.marker-size-field{display:flex;align-items:center;justify-content:center;gap:12px}.marker-size-field input{flex:0 0 auto;width:4ch;padding:0;text-align:right;border:0;background:transparent;outline:none}.marker-size-field span{flex:0 0 auto}.crack-box-height-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.crack-box-height-header .block-label{margin:0}.crack-box-height-value{min-width:72px;padding:6px 10px;text-align:center;color:var(--blue);background:#0087b714;border-radius:999px}.crack-box-height-slider{width:100%;margin-top:12px;cursor:pointer}.crack-box-height-limits{display:flex;justify-content:space-between;margin-top:5px;color:var(--muted);font-size:.76rem}.workspace-card{align-self:start}.workspace-card:not(.workspace-card-results){display:flex}.analysis-stage{height:100%;overflow:auto;overscroll-behavior:contain;border-radius:8px;background:var(--surface-muted);padding:20px}.image-frame{position:relative;width:min(100%,860px);margin:0 auto;transform-origin:center top;touch-action:none;user-select:none;-webkit-user-select:none}.analysis-image{display:block;width:100%;height:auto;border-radius:6px;box-shadow:0 18px 40px #06171729;pointer-events:none}.selection-square{position:absolute;border:3px solid var(--orange);background:#ec660729;border-radius:4px;cursor:grab;touch-action:none}.anchor-point{position:absolute;width:20px;height:20px;margin-left:-10px;margin-top:-10px;border:3px solid #fff;border-radius:999px;background:var(--blue);box-shadow:0 10px 20px #051a1a33;cursor:grab;touch-action:none}.measure-line{position:absolute;height:4px;margin-top:-2px;transform-origin:left center;background:linear-gradient(90deg,var(--blue),var(--green))}.empty-state{width:100%;height:100%;min-height:500px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:40px;text-align:center}.empty-state h2{margin:0}.empty-state p{max-width:440px;margin:0;line-height:1.5}.analysis-stage-touch{position:relative;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:contain}.analysis-stage-touch .image-frame{transform-origin:top left;will-change:transform}.analysis-stage-touch .analysis-image{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.image-frame{position:relative}.analysis-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#0f172a52;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:#fff;pointer-events:all;cursor:wait}.analysis-loading-text{padding:6px 10px;font-size:.95rem;font-weight:700;color:#fff;background:#0f172abf;border-radius:999px}.analysis-spinner{width:44px;height:44px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:analysis-spin .8s linear infinite}@keyframes analysis-spin{to{transform:rotate(360deg)}}.marker-size-field input::-webkit-inner-spin-button,.marker-size-field input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.marker-size-field input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#000000b3}.modal-card{width:min(92vw,900px);border-radius:10px;background:#000;padding:18px}.modal-stage{position:relative;overflow:hidden;border-radius:6px}.modal-actions{display:flex;justify-content:flex-end;padding-top:14px}.modal-image{display:block;width:100%;max-height:70vh;object-fit:contain;margin:0 auto}.camera-stage{overflow:hidden;border-radius:6px;background:#000}.camera-video{display:block;width:100%;max-height:70vh;object-fit:cover}.disclaimer-icon{position:absolute;top:14px;right:14px;z-index:3;display:inline-flex;align-items:center;gap:8px;min-height:46px;border:0;border-radius:999px;padding:0 14px;background:#0087b7eb;box-shadow:0 10px 24px #0514143d}.disclaimer-panel{position:absolute;right:14px;bottom:14px;z-index:2;width:min(420px,calc(100% - 28px));padding:16px 18px;border-radius:18px;background:#fffffffa;color:var(--ink);box-shadow:0 18px 40px #05141447}@keyframes scan{0%{top:10%}50%{top:88%}to{top:10%}}.disclaimer-icon-mark{color:var(--orange);font-size:1.9rem;line-height:1}.disclaimer-icon-label{color:#fff;font-size:.92rem;font-weight:700;letter-spacing:.01em}.disclaimer-panel h3{margin:0 0 10px;font-size:1rem}.disclaimer-panel p{margin:0;font-size:.92rem;line-height:1.45}.disclaimer-panel p+p{margin-top:10px}.scan-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#00000052}.scan-bar{position:absolute;left:10%;right:10%;height:3px;background:linear-gradient(90deg,transparent,var(--green),transparent);box-shadow:0 0 30px var(--green);animation:scan 1.8s linear infinite}.scan-copy{padding:10px 14px;border-radius:999px;color:#efffff;background:#0087b7cc;text-transform:uppercase;font-size:.78rem}.crack-result-card{width:100%;box-sizing:border-box;margin:0;padding:28px;border:1px solid var(--line-soft);border-top:4px solid var(--green);border-radius:10px;background:#fff;box-shadow:var(--shadow)}.crack-result-header{display:flex;justify-content:left;align-items:left;text-align:left;margin-bottom:12px}.crack-result-header h2{margin-top:6px}.crack-result-eyebrow{color:var(--blue);font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.crack-result-status{flex-shrink:0;padding:7px 12px;border-radius:999px;background:#00bfb61f;color:var(--green-dark);font-size:.82rem;font-weight:800}.crack-result-main{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);gap:28px;align-items:stretch}.crack-result-image{display:block;width:100%;height:auto;object-fit:contain}.crack-result-image-wrapper{overflow:hidden;border-radius:6px;background:var(--surface-muted);border:1px solid var(--line-soft)}.crack-result-summary{display:flex;flex-direction:column;justify-content:space-between;gap:24px}.crack-result-summary-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.crack-metric{min-height:96px;padding:16px;border:1px solid var(--line-soft);border-radius:6px;background:var(--bg)}.crack-metric-label{display:block;min-height:34px;margin-bottom:8px;color:var(--muted);font-size:.8rem;font-weight:700}.crack-metric strong{color:var(--ink);font-size:1.3rem;line-height:1}.crack-metric small{color:#607170;font-size:.75rem;font-weight:700}.crack-result-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:auto}.crack-histogram{width:100%;margin:24px 0 32px;padding:24px;box-sizing:border-box;border:1px solid var(--line-soft);border-radius:6px;background:#fff;overflow:visible}.crack-histogram h3{margin:0 0 20px;font-size:1rem}.crack-histogram-empty{margin:0 32px 32px;padding:24px;border:1px dashed #cbd5e1;border-radius:14px;color:#64748b;text-align:center}.crack-histogram-layout{display:block}.crack-histogram-chart{min-width:0;padding-inline:72px}.crack-histogram-reference-p05{color:var(--magenta)}.crack-histogram-reference-p95{color:var(--blue)}.crack-histogram-reference-mean{color:var(--green-dark)}.crack-histogram-reference-median{color:var(--orange)}.crack-histogram-reference-mean .crack-histogram-reference-line{border-left-style:solid}.crack-histogram-reference-median .crack-histogram-reference-line{border-left-style:dashed}.crack-histogram-reference-p05 .crack-histogram-reference-line,.crack-histogram-reference-p95 .crack-histogram-reference-line{border-left-style:dotted}.crack-histogram-plot{position:relative;overflow:visible}.crack-histogram-reference{position:absolute;top:0;bottom:24px;z-index:4;width:0;pointer-events:none}.crack-histogram-reference-label{position:absolute;top:0;z-index:6;display:flex;align-items:center;gap:5px;width:max-content;max-width:140px;white-space:nowrap}.crack-histogram-reference-copy{display:flex;flex-direction:column;align-items:center;text-align:center}.crack-histogram-reference-copy strong{color:currentColor;font-size:.75rem;line-height:1.2}.crack-histogram-reference-copy span{margin-top:2px;color:currentColor;font-size:.7rem;line-height:1.2}.crack-histogram-reference-label:not(.crack-histogram-reference-label-left):not(.crack-histogram-reference-label-right){transform:translate(-50%)}.crack-histogram-reference-line{position:absolute;bottom:0;left:0;border-left:2px dashed currentColor}.crack-histogram-bars{display:flex;align-items:flex-end;gap:6px;height:220px;padding:0;border-bottom:1px solid var(--line)}.crack-histogram-column{display:flex;flex:1;align-items:flex-end;height:100%;min-width:0}.crack-histogram-bar{width:100%;min-height:2px;border-radius:4px 4px 0 0;background:var(--blue)}.crack-histogram-x-axis{display:flex;gap:6px;height:28px}.crack-histogram-axis-bin{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;min-width:0}.crack-histogram-tick{width:1px;height:5px;background:var(--line)}.crack-histogram-axis-bin span{margin-top:3px;color:var(--muted);font-size:.7rem;line-height:1;white-space:nowrap}.crack-histogram-axis-title{margin-top:8px;text-align:center;color:#64748b;font-size:.8rem}.crack-histogram-reference-minimum,.crack-histogram-reference-maximum{color:#64748b}.crack-histogram-reference-minimum .crack-histogram-reference-line,.crack-histogram-reference-maximum .crack-histogram-reference-line{border-left-style:dashed;border-left-width:1px;opacity:.85}@media (max-width: 1024px){.onepage-grid{grid-template-columns:1fr}.workspace-card{min-height:560px}}@media (max-width: 720px){.page{padding:16px}.hero{flex-direction:column}.hero-brand{align-items:flex-start}.hero-actions{width:100%;justify-content:space-between;margin-left:0}}@media (max-width: 900px){.crack-result-main{grid-template-columns:1fr}.crack-result-image-wrapper{min-height:0}.crack-result-image{height:auto}}@media (max-width: 560px){.crack-result-main{grid-template-columns:1fr}.crack-result-card{padding:18px}.crack-result-header{flex-direction:column}.crack-result-summary-metrics,.crack-result-actions{grid-template-columns:1fr}}.crack-disclaimer{width:100%;margin:24px 0;overflow:hidden;border:1px solid #f3b26b;border-radius:12px;background:#fff7ed;box-sizing:border-box}.crack-disclaimer-header{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:0;border-bottom:1px solid transparent;background:transparent;color:#9a4d00;font:inherit;text-align:left;cursor:pointer}.crack-disclaimer-header[aria-expanded=true]{border-bottom-color:#f6d2aa}.crack-disclaimer-icon{position:static;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 22px;margin:0;border-radius:50%;background:#ef8a0c;color:#fff;font-size:.85rem;font-weight:700;line-height:1;box-shadow:none;transform:none}.crack-disclaimer-title{flex:1;font-size:.95rem;font-weight:700}.crack-disclaimer-chevron{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:#b86411;font-size:.8rem;line-height:1;transition:transform .2s ease}.crack-disclaimer-chevron-open{transform:rotate(180deg)}.crack-disclaimer-content{padding:14px 16px 16px;color:#4f3a2b;font-size:.92rem;line-height:1.5}.crack-disclaimer-content p{margin:0}.crack-disclaimer-footer{margin-top:14px!important;font-weight:400}
