@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/SpaceGrotesk-400.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/SpaceGrotesk-500.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/SpaceGrotesk-600.ttf) format("truetype")}:root{color-scheme:light;--bg:#f7f9fb;--bg-accent:#e9eef4;--panel:#fff;--ink:#0c1116;--muted:#5c6770;--border:#d7dde5;--ok:#0f8a5f;--warn:#d97706;--bad:#c2410c;--accent:#0b7285;--shadow:0 16px 40px rgba(15,23,42,.12)}*{box-sizing:border-box}body{margin:0;font-family:Space Grotesk,system-ui,-apple-system,sans-serif;color:var(--ink);background:radial-gradient(circle at top,#fff 0,var(--bg) 45%,var(--bg-accent) 100%);min-height:100vh}.page{display:flex;flex-direction:column;gap:16px;padding:20px}.content-grid{grid-template-columns:1fr}.content-grid,.left-col,.right-col{display:grid;grid-gap:16px;gap:16px}.left-col,.right-col{align-content:start;min-width:0}.header{display:flex;flex-direction:column;gap:12px}.header h1{margin:0;font-size:28px;letter-spacing:-.02em}.header p{margin:6px 0 0;color:var(--muted);font-size:14px}.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-start}.button{border:1px solid var(--border);background:var(--panel);color:var(--ink);padding:10px 16px;border-radius:999px;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.button:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(15,23,42,.12);border-color:#b9c2ce}.button:disabled{cursor:not-allowed;opacity:.6;transform:none;box-shadow:none}.button.start{background:linear-gradient(135deg,#e6f4f1,#f7fffb);border-color:#c5e6df}.button.stop{background:linear-gradient(135deg,#fff1e9,#fffaf5);border-color:#f3c7b3}.file-input{display:none}.text-input{width:100%;padding:8px 10px;border-radius:10px;border:1px solid var(--border);font-size:14px;font-family:inherit;color:var(--ink);background:#fff}.export-name,.export-name .text-input{min-width:180px}@media (max-width:720px){.page{padding:16px}.controls{flex-direction:column;align-items:stretch}.controls .button{width:100%;justify-content:center}.export-name,.export-name .text-input{width:100%;min-width:0}.camera-wrap{aspect-ratio:3/4;border-radius:14px}.panel{padding:14px}.sub-tab,.tab{flex:1 1 auto;justify-content:center;text-align:center}.metric-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:900px) and (orientation:landscape){.header{flex-direction:row;align-items:flex-start;justify-content:space-between;gap:16px}.controls{margin-left:auto;align-items:center}.estimate-metric{justify-self:end;align-items:flex-end;text-align:right}}@media (max-width:480px){.metric-row{grid-template-columns:1fr}.header h1{font-size:24px}}.camera-wrap{position:relative;width:100%;aspect-ratio:16/9;border-radius:18px;overflow:hidden;background:#0c1116;box-shadow:var(--shadow)}.overlay,.video{position:absolute;inset:0;width:100%;height:100%}.video{object-fit:contain;background:#0c1116}.capture-image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.line-overlay,.overlay{pointer-events:none;object-fit:contain;object-position:center}.line-overlay{position:absolute;inset:0;width:100%;height:100%}.line-overlay.hidden,.overlay.hidden{display:none}.flip-horizontal{transform:scaleX(-1)}.camera-overlay{position:absolute;inset:0;display:grid;place-items:center;color:#f8fafc;font-size:16px;letter-spacing:.02em;background:linear-gradient(180deg,rgba(12,17,22,.35),rgba(12,17,22,.6))}.panel{background:var(--panel);border-radius:16px;padding:16px;border:1px solid var(--border);display:grid;grid-gap:12px;gap:12px;box-shadow:0 8px 24px rgba(15,23,42,.08)}.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:6px 14px;border-radius:999px;font-weight:600;font-size:14px;width:-moz-fit-content;width:fit-content}.status-ok{background:rgba(15,138,95,.15);color:var(--ok);border:1px solid rgba(15,138,95,.35)}.status-warn{background:rgba(217,119,6,.16);color:var(--warn);border:1px solid rgba(217,119,6,.35)}.status-bad{background:rgba(194,65,12,.16);color:var(--bad);border:1px solid rgba(194,65,12,.35)}.status-neutral{background:rgba(15,23,42,.08);color:var(--muted);border:1px solid rgba(148,163,184,.35)}.metric{display:flex;flex-direction:column;gap:6px}.metric span{color:var(--muted);font-size:13px}.metric strong{font-size:18px}.metric-row{display:grid;grid-gap:10px;gap:10px}.metric.small strong{font-size:16px}.line-controls,.tabs{display:grid;grid-gap:12px;gap:12px}.tab-list{display:flex;gap:8px;flex-wrap:wrap}.tab{border:1px solid var(--border);background:#f6f7fb;color:var(--muted);padding:8px 14px;border-radius:999px;font-weight:600;cursor:pointer;transition:border-color .2s ease,color .2s ease,background .2s ease}.tab.active{background:#eef6f8;color:var(--ink);border-color:#9ccbd5}.tab:disabled{opacity:.5;cursor:not-allowed}.tab-panel{border:1px solid var(--border);border-radius:14px;padding:12px;background:#fbfcff;display:grid;grid-gap:16px;gap:16px}.sub-tab-list{display:flex;gap:8px;flex-wrap:wrap}.sub-tab{border:1px solid var(--border);background:#fff;color:var(--muted);padding:6px 12px;border-radius:999px;font-weight:600;font-size:13px;cursor:pointer;transition:border-color .2s ease,color .2s ease,background .2s ease}.sub-tab.active{background:#eef6f8;color:var(--ink);border-color:#9ccbd5}.pillar-group{border:1px dashed var(--border);border-radius:12px;padding:10px;display:grid;grid-gap:8px;gap:8px;background:#fff}.control{display:grid;grid-gap:6px;gap:6px;font-size:13px;color:var(--muted)}.control-title{font-size:14px;font-weight:600;color:var(--ink)}.calc-note{color:var(--muted);font-size:12px;line-height:1.4}.control input[type=range]{width:100%}.control-value{color:var(--ink);font-weight:600;font-size:14px}.error{padding:12px 14px;border-radius:12px;border:1px solid rgba(194,65,12,.35);background:rgba(194,65,12,.08);color:#7c2d12;font-size:14px}@media (min-width:900px){.page{padding:32px 48px 40px;max-width:1100px;margin:0 auto}.header{flex-direction:row;align-items:center;justify-content:space-between}.content-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr);align-items:start}.metric-row{grid-template-columns:repeat(3,minmax(0,1fr))}}