*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:#e9eef3;color:#1a293b;font-size:16px}button,input{font:inherit}button{cursor:pointer;border:1px solid #ced6df;background:#fff;color:#21344a;padding:10px 14px;border-radius:6px;font-size:14px;transition:background .15s}button:hover{background:#f0f4f8}button:focus-visible,input:focus-visible{outline:3px solid #eea331;outline-offset:3px}.primary{background:#ffac36;border-color:#ffac36;color:#152236;font-weight:650}.primary:hover{background:#ffc05d}header{height:80px;background:#102033;color:#fff;display:flex;align-items:center;gap:28px;padding:0 26px}.brand{display:flex;gap:12px;align-items:center;font-size:20px;letter-spacing:-.4px;font-weight:600}.brandmark{border:1px solid #ffac36;color:#ffac36;font-size:15px;letter-spacing:1px;padding:10px 7px;border-radius:5px}.brand small{display:block;font-size:14px;letter-spacing:0;font-weight:400;line-height:1.35;color:#afbdce;margin-top:5px}.file-name{font-size:14px;color:#bdcad9;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}main{display:grid;grid-template-columns:300px minmax(0,1fr);height:calc(100dvh - 80px)}aside{background:#fbfcfe;border-right:1px solid #d7dfe7;overflow-y:auto;padding:24px 20px;display:flex;flex-direction:column;gap:24px}section{border-bottom:1px solid #e1e6eb;padding-bottom:24px}.eyebrow{font-size:12px;font-weight:700;letter-spacing:1.4px;color:#68798d;margin:0 0 14px}.toolset{display:flex;gap:8px}.toolset button{flex:1}.active{background:#102d49!important;color:#fff!important;border-color:#102d49!important}.muted{font-size:14px;color:#6a7889;line-height:1.55}p.muted{margin-bottom:0}.views{display:grid;grid-template-columns:1fr 1fr;gap:8px}.wide{width:100%;margin-top:8px}.check{display:flex;align-items:center;gap:9px;font-size:14px;margin-top:14px}.check input{accent-color:#183954;width:17px;height:17px}.dimensions{display:flex;flex-direction:column;gap:13px;margin-bottom:12px}.dimensions div{display:flex;justify-content:space-between;font-size:14px}.dimensions b{font-variant-numeric:tabular-nums;font-weight:600}.section-title{display:flex;align-items:baseline;justify-content:space-between}.textbutton{padding:0;border:0;color:#66798e;background:none;font-size:12px}.measurements ol{padding:0;list-style:none;margin:0}.measurements li{border:1px solid #dde4eb;border-left:3px solid #e89922;border-radius:4px;margin-top:10px;padding:12px;font-size:14px}.measurements li b{font-variant-numeric:tabular-nums}.measurements li small{display:block;margin-top:6px;font-size:12px;color:#718094}.measurement-head{display:flex;justify-content:space-between;align-items:center}.delete{border:0;background:none;padding:0 3px;color:#76889b}footer{margin-top:auto;font-size:12px;color:#7a8898;line-height:1.6}footer b{font-size:12px;color:#3c526a}#viewport{position:relative;overflow:hidden;min-height:320px;background:radial-gradient(ellipse at 50% 45%,#fafcfe,#e6edf4)}#canvas,#labels{position:absolute;inset:0}#canvas canvas{display:block;touch-action:none}#labels{pointer-events:none;overflow:hidden}.measure-label{position:absolute;background:#102c47;color:#fff;padding:5px 9px;font-size:13px;border-radius:4px;transform:translate(-50%,-50%);white-space:nowrap;box-shadow:0 2px 8px #0002}.viewbadge{position:absolute;top:22px;left:24px;font-size:11px;letter-spacing:1.4px;background:#fff9;padding:8px 11px;border:1px solid #d3dde7;border-radius:4px;color:#62778d}.canvas-footer{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;gap:12px;padding:14px 24px;background:#f7fafde0;border-top:1px solid #d5dfe8;font-size:12px;color:#667b92}#empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:30px;gap:8px}#empty h1{font-weight:500;font-size:27px;letter-spacing:-1px;margin:15px 0 0}#empty p{font-size:16px;color:#7a8a9d;margin:10px 0 15px}#empty small{font-size:12px;color:#8292a4;margin-top:14px}.file-symbol{width:76px;height:88px;border:2px solid #adc0d3;border-radius:7px;background:#f6f9fc;display:grid;place-items:center;font-size:20px;color:#54728e;font-weight:600}#busy{position:absolute;inset:0;background:#f1f6f5e8;align-items:center;justify-content:center;flex-direction:column;gap:18px}#busy:not([hidden]){display:flex}#busy b{font-weight:500;text-align:center;padding:0 20px}.spinner{width:36px;height:36px;border:3px solid #c8d5e1;border-top-color:#e99c2c;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}[hidden]{display:none!important}#error{position:absolute;left:20px;right:20px;top:65px;z-index:2;background:#fff2ef;color:#92392d;border:1px solid #e6afa4;border-radius:6px;padding:16px;font-size:14px;line-height:1.5}#hover{position:absolute;right:22px;top:22px;padding:8px 12px;background:#102c47;color:#fff;border-radius:4px;font-size:12px}#viewport.dragover{outline:3px dashed #eea32e;outline-offset:-12px}@media(max-width:850px){main{grid-template-columns:230px minmax(0,1fr)}aside{padding:20px 14px}.file-name{display:none}header{justify-content:space-between}#empty h1{font-size:22px}.canvas-footer{font-size:11px;padding:12px;flex-wrap:wrap}}@media(max-width:600px){header{height:auto;min-height:68px;padding:12px 14px;gap:12px;flex-wrap:wrap}.brand{font-size:18px}main{height:auto;display:flex;flex-direction:column-reverse}#viewport{height:62dvh;min-height:340px}aside{border-right:0;display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:20px}footer,.measurements{grid-column:1/-1}section{padding-bottom:16px}.toolset{flex-direction:column}#empty{padding:22px}#empty h1{font-size:21px}.canvas-footer span:last-child{display:none}}.export-label{display:block;font-size:14px;margin-bottom:8px}.exports select{width:100%;min-width:0;max-width:100%;padding:10px 8px;border:1px solid #ced6df;border-radius:6px;background:#fff;color:#21344a;font:inherit;font-size:14px}.export-note{display:block;margin-top:12px;font-size:12px;line-height:1.5;color:#6a7889}button:disabled{opacity:.5;cursor:default}select:focus-visible{outline:3px solid #eea331;outline-offset:3px}footer a{color:#3c526a}@media(max-width:600px){.exports{grid-column:1/-1}}
