:root{--brand:#264d47;--brand-dark:#1b3a35;--brand-light:#3a6b62;--brand-tint:#e8efed;--accent:#c9a86a;--bg:#f4f4f1;--surface:#ffffff;--text:#1d2826;--text-soft:#5a6b67;--ok:#2e7d32;--warn:#c75100;--bad:#b3261e;--radius:14px;--shadow:0 1px 3px rgba(29,40,38,0.1),0 4px 16px rgba(29,40,38,0.06)}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button{cursor:pointer}button,input,select{font:inherit}.app-shell{max-width:1100px;margin:0 auto;padding:0 16px 96px}.masthead{background:var(--brand);box-shadow:var(--shadow)}.masthead-img{display:block;width:100%;max-height:130px;object-fit:cover;object-position:left center}.masthead-bar{background:var(--brand-dark);color:#fff;padding:9px 20px;display:flex;align-items:center;gap:14px}.masthead-bar .app-title{font-size:14px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.masthead-bar .spacer{flex:1 1}.masthead-bar .userchip{font-size:13px;background:rgba(255,255,255,.1);padding:5px 12px;border-radius:999px;display:flex;align-items:center;gap:8px}.masthead-bar .userchip .role{background:var(--accent);color:var(--brand-dark);font-weight:600;font-size:11px;padding:1px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.masthead-bar .signout{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:8px;padding:5px 12px;font-size:13px}.masthead-bar .signout:hover{background:rgba(255,255,255,.12)}.tabs{display:flex;gap:6px;margin:20px 0;background:var(--surface);border-radius:var(--radius);padding:6px;box-shadow:var(--shadow);flex-wrap:wrap}.tabs button{flex:1 1;min-width:120px;border:none;background:transparent;padding:12px 10px;border-radius:10px;font-size:14.5px;font-weight:600;color:var(--text-soft)}.tabs button.active{background:var(--brand);color:#fff}.tabs button:not(.active):hover{background:var(--brand-tint);color:var(--brand)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:18px}.card h2{font-size:17px;color:var(--brand);margin-bottom:4px}.card .sub{font-size:13px;color:var(--text-soft);margin-bottom:16px}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}@media (max-width:800px){.grid-2{grid-template-columns:1fr}}.btn{background:var(--brand);color:#fff;border:none;border-radius:10px;padding:12px 20px;font-size:15px;font-weight:600;transition:background .15s}.btn:hover{background:var(--brand-light)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.secondary{background:var(--brand-tint);color:var(--brand)}.btn.secondary:hover{background:#d8e4e1}.btn.ghost{background:transparent;color:var(--brand);border:1.5px solid var(--brand)}.btn.small{padding:7px 12px;font-size:13px;border-radius:8px}.btn.danger{background:transparent;border:none;color:var(--bad);font-size:13px;padding:6px}.signin-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--brand-dark) 0,var(--brand) 55%,#35594f 100%);padding:20px}.signin-card{background:var(--surface);border-radius:20px;padding:0 36px 40px;width:100%;max-width:440px;box-shadow:0 24px 60px rgba(0,0,0,.35);overflow:hidden}.signin-cover{display:block;width:calc(100% + 72px);margin:0 -36px 24px;height:auto}.signin-card .brandblock{text-align:center;margin-bottom:26px}.signin-wordmark{display:block;width:230px;max-width:80%;margin:0 auto 6px}.signin-card .appname{margin-top:14px;font-size:15px;font-weight:600}.signin-card label{display:block;font-size:13px;font-weight:600;color:var(--text-soft);margin:14px 0 5px}.signin-card input,.signin-card select{width:100%;padding:11px 12px;border:1.5px solid #d4dcda;border-radius:10px;font-size:15px;background:#fbfcfc}.signin-card input:focus,.signin-card select:focus{outline:2px solid var(--brand);border-color:var(--brand)}.ms-btn{width:100%;margin-top:22px;display:flex;align-items:center;justify-content:center;gap:10px;background:#2f2f2f;color:#fff;border:none;border-radius:10px;padding:13px;font-size:15px;font-weight:600}.ms-btn:hover{background:#1f1f1f}.ms-logo{display:inline-grid;grid-template-columns:8px 8px;grid-template-rows:8px 8px;gap:1.5px}.ms-logo i{display:block}.signin-note{margin-top:16px;font-size:12px;line-height:1.5}.dropzone,.signin-note{color:var(--text-soft);text-align:center}.dropzone{border:2px dashed #b9c8c4;border-radius:var(--radius);padding:30px 20px;font-size:14px;background:#fafbfa;transition:border-color .15s,background .15s}.dropzone.drag{border-color:var(--brand);background:var(--brand-tint)}.dropzone .big{font-size:38px;margin-bottom:8px}.capture-row{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}.checkline{display:flex;align-items:center;gap:8px;font-size:13.5px;margin-top:12px;color:var(--text-soft)}.video-frame{position:relative;border-radius:var(--radius);overflow:hidden;background:#000}.video-frame video{width:100%;display:block}.video-frame .guide{position:absolute;inset:12%;border:2.5px solid rgba(255,255,255,.85);border-radius:10px;pointer-events:none;box-shadow:0 0 0 9999px rgba(0,0,0,.35)}.video-frame .guide-label{position:absolute;top:4%;left:0;right:0;text-align:center;color:#fff;font-size:13px;text-shadow:0 1px 3px rgba(0,0,0,.7);pointer-events:none}.video-frame .calib-zone{position:absolute;left:14%;bottom:14%;width:18%;height:14%;border:2px dashed var(--accent);border-radius:6px;pointer-events:none}.video-frame .calib-label{position:absolute;left:14%;bottom:9%;color:var(--accent);font-size:11px;text-shadow:0 1px 2px rgba(0,0,0,.8);pointer-events:none}.warnbox{background:#fff6ec;border:1px solid #f0c89a;color:var(--warn);border-radius:10px}.okbox,.warnbox{padding:10px 14px;font-size:13.5px;margin-top:12px}.okbox{background:#edf7ee;border:1px solid #b5d9b7;color:var(--ok);border-radius:10px}.panel-table{width:100%;border-collapse:collapse;font-size:14px}.panel-table th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-soft);padding:8px 10px;border-bottom:2px solid var(--brand-tint)}.panel-table td{padding:9px 10px;border-bottom:1px solid #eef1f0;vertical-align:middle}.panel-table tr.is-ref{background:var(--brand-tint)}.thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;display:block;border:1px solid #e0e6e4}.swatch{display:inline-block;width:20px;height:20px;border-radius:5px;border:1px solid rgba(0,0,0,.15);vertical-align:middle}.ref-pill{background:var(--brand);color:#fff;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;letter-spacing:.03em}.delta-ok{color:var(--ok);font-weight:600}.delta-bad{color:var(--bad);font-weight:600}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-family:Cascadia Code,Consolas,monospace;font-size:13px}.rank-controls{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-bottom:18px}.rank-controls .field label{display:block;font-size:12.5px;font-weight:600;color:var(--text-soft);margin-bottom:4px}.rank-controls input[type=number]{width:110px;padding:10px 12px;border:1.5px solid #d4dcda;border-radius:10px;font-size:16px}.rank-card{display:flex;gap:14px;align-items:center;border:1px solid #e4e9e7;border-radius:var(--radius);padding:12px 16px;margin-bottom:10px;background:#fff}.rank-card .pos{font-size:22px;font-weight:800;color:var(--brand);width:36px;text-align:center}.rank-card .meta{flex:1 1}.rank-card .meta .name{font-weight:600;font-size:15px}.rank-card .meta .axes{font-size:12.5px;color:var(--text-soft);margin-top:2px}.rank-card .de{text-align:right}.rank-card .de .val{font-size:19px;font-weight:700}.rank-card .de .lbl{font-size:11px;color:var(--text-soft);text-transform:uppercase;letter-spacing:.05em}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:14px;gap:14px;margin-bottom:18px}.kpi{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.kpi .num{font-size:30px;font-weight:800;color:var(--brand)}.kpi .lbl{font-size:12.5px;color:var(--text-soft);margin-top:2px}.bars{display:flex;align-items:flex-end;gap:6px;height:120px;margin-top:14px}.bars .bar{flex:1 1;background:var(--brand-light);border-radius:4px 4px 0 0;min-height:2px;position:relative}.bars .bar .cnt{position:absolute;top:-18px;left:0;right:0;text-align:center;font-size:11px;color:var(--text-soft)}.bars-labels{display:flex;gap:6px;margin-top:6px}.bars-labels span{flex:1 1;font-size:10.5px}.bars-labels span,.empty{text-align:center;color:var(--text-soft)}.empty{padding:36px 20px;font-size:14.5px}.footer-note{text-align:center;font-size:12px;color:var(--text-soft);margin-top:30px;line-height:1.6}