:root{--black:#050505;--ink:#101010;--soft:#f3f3f1;--white:#fff;--line:#d9d9d6;--muted:#6e6e69;--radius:14px}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{background:var(--soft);color:var(--ink);font-family:"Manrope",sans-serif}
body{margin:0;min-height:100vh}
button,input,select{font:inherit}
.topbar{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 max(18px,calc((100vw - 1040px)/2));background:var(--black);color:white;position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:10px;color:white;text-decoration:none;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;border:1px solid #555;border-radius:8px}
.nav-link{color:white;text-decoration:none;font-size:13px;font-weight:700}
.badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;margin-left:4px;border-radius:20px;background:white;color:black;font-size:11px}
.shell{width:min(calc(100% - 28px),1040px);margin:auto}
.capture-shell{max-width:560px;padding:22px 0 64px}
.wizard-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:14px}
.wizard-head strong{font-size:16px}
.wizard-head span{color:var(--muted);font-variant-numeric:tabular-nums}
.progress{height:3px;background:#d8d8d4;margin-bottom:16px;overflow:hidden}
.progress span{display:block;width:25%;height:100%;background:var(--black);transition:width .25s}
.step{display:none}.step.active{display:block;animation:enter .2s ease both}
@keyframes enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.camera-frame{aspect-ratio:1;position:relative;overflow:hidden;border-radius:var(--radius);background:#111}
.camera-frame video,.camera-frame img{width:100%;height:100%;object-fit:cover}
.camera-fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:white;background:#111}
.camera-fallback strong{font-size:24px}.camera-fallback span{font-size:13px;color:#aaa}
.frame-corners{pointer-events:none;position:absolute;inset:16px;border:1px solid rgba(255,255,255,.45);border-radius:9px}
.button{border:0;min-height:54px;border-radius:11px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;text-decoration:none;cursor:pointer;width:100%}
.button:active{transform:scale(.99)}.button:disabled{opacity:.55;cursor:wait}
.primary{background:var(--black);color:white}.secondary{background:white;color:var(--black);border:1px solid var(--line)}
.camera-button,.file-camera{margin-top:10px}.file-camera input{display:none}
.wizard-photo{display:block;width:72px;height:72px;object-fit:cover;border-radius:10px;margin:0 0 10px auto;border:1px solid var(--line)}
.capture-preview{display:flex;align-items:center;gap:11px;margin-top:10px;min-height:0}.capture-thumbnail{width:76px;height:76px;margin:0;border-radius:9px}.capture-preview-label{font-size:13px;font-weight:800}
.split-actions{display:grid;grid-template-columns:1fr 1.5fr;gap:9px;margin-top:10px}
.panel{background:white;padding:22px;border:1px solid var(--line);border-radius:var(--radius)}
.panel h2{font-size:20px;margin:0 0 3px}
.panel label,.filters label{display:block;font-size:13px;font-weight:800;margin:18px 0 7px}.panel label:first-child{margin-top:0}
.panel select,.panel input,.filters input,.filters select{width:100%;height:54px;border:1px solid #c9c9c5;background:white;border-radius:10px;padding:0 14px;color:var(--ink);outline:none}
.panel select:focus,.panel input:focus,.filters input:focus,.filters select:focus{border-color:#000;box-shadow:0 0 0 2px #000}
.muted{color:var(--muted);font-size:13px;margin:0}
.measure-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.unit-input{display:flex;align-items:center;border:1px solid #c9c9c5;border-radius:10px}.unit-input input{border:0!important;box-shadow:none!important}.unit-input b{padding-right:12px;color:var(--muted)}
.notice{padding:12px 14px;border-radius:10px;margin-top:10px;font-size:13px}.error{background:#fff0ed;color:#991f08;border:1px solid #f0b5a8}
.result{text-align:center;background:white;padding:34px 22px;border:1px solid var(--line);border-radius:var(--radius)}
.success-mark{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:black;color:white;font-size:24px;margin:0 auto 18px}
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.14em;font-weight:800;color:var(--muted)}
.result h2{font-size:28px;margin:8px 0}.result p{color:var(--muted)}.result .button{margin-top:8px}
.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%,20px);background:black;color:white;padding:12px 16px;border-radius:9px;opacity:0;pointer-events:none;transition:.2s;z-index:30;font-size:13px}.toast.show{opacity:1;transform:translate(-50%,0)}
.compact{width:auto;min-height:40px;padding:0 15px;background:white;color:black}
.records-shell{padding:38px 0 70px}.records-heading{display:flex;align-items:end;justify-content:space-between;gap:20px}.records-heading h1{font-size:38px;margin:3px 0}.records-heading .muted{margin:0}
.export-links{display:flex;gap:7px}.export-links a{padding:9px 12px;border:1px solid var(--line);border-radius:8px;color:black;font-size:12px;font-weight:800;text-decoration:none;background:white}
.filters{display:grid;grid-template-columns:1.5fr .7fr;gap:12px;margin:24px 0}.filters label{margin:0}.filters label>span{display:block;margin-bottom:6px}
.records-list{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.record-row{width:100%;border:0;border-bottom:1px solid var(--line);background:white;display:grid;grid-template-columns:64px 1.1fr .8fr 1fr auto;gap:16px;align-items:center;padding:13px 18px;text-align:left;color:var(--ink)}
.record-row:last-child{border-bottom:0}.record-row:hover{background:#f7f7f5}.record-thumb{width:64px;height:64px;object-fit:cover;border-radius:9px;background:#eee}.record-main{display:flex;flex-direction:column;gap:4px}.record-main small,.record-row time small{display:block;color:var(--muted);font-size:11px;font-weight:600}.record-code{font-weight:800}.record-row time{color:var(--ink);font-size:13px;font-weight:700}.empty{padding:36px;text-align:center;color:var(--muted)}
.record-actions{display:flex;align-items:center;gap:7px}.record-actions a,.record-actions button{border:1px solid var(--line);border-radius:8px;background:white;color:black;padding:9px 11px;font:inherit;font-size:12px;font-weight:800;text-decoration:none;white-space:nowrap;cursor:pointer}.record-actions button{color:#a21b0b;border-color:#e6b9b2}.record-actions button:disabled{opacity:.55;cursor:wait}
dialog{border:0;border-radius:14px;padding:0;max-width:min(92vw,520px);width:100%;box-shadow:0 25px 80px rgba(0,0,0,.35)}dialog::backdrop{background:rgba(0,0,0,.72)}
.dialog-close{position:absolute;right:10px;top:10px;z-index:2;border:0;background:white;width:36px;height:36px;border-radius:50%;font-size:23px}
.record-card{background:white;padding:42px 30px 30px}.record-card .eyebrow{margin:0 0 12px}.record-card h2{font-size:32px;margin:0 0 28px}.record-card dl{margin:0}.record-card dl div{display:flex;justify-content:space-between;gap:18px;padding:13px 0;border-bottom:1px solid var(--line)}.record-card dt{color:var(--muted)}.record-card dd{margin:0;font-weight:800;text-align:right;max-width:65%}
@media(max-width:650px){.topbar{height:58px;padding:0 14px}.brand{font-size:11px}.capture-shell{padding-top:14px}.camera-frame{border-radius:10px}.measure-grid{grid-template-columns:1fr}.records-heading{align-items:start;flex-direction:column}.filters{grid-template-columns:1fr}.record-row{grid-template-columns:58px 1fr;gap:9px 11px;padding:12px}.record-thumb{width:58px;height:58px}.record-dimensions{display:none}.record-row time{grid-column:2;font-size:12px}.record-actions{grid-column:1/3}.record-actions a,.record-actions button{flex:1;text-align:center}.export-links{width:100%}.export-links a{flex:1;text-align:center}.panel{padding:18px 14px}.button{min-height:52px}}
