:root{--bg: #f4f5f7;--surface: #ffffff;--text: #1f2328;--muted: #59636e;--border: #d0d7de;--accent: #d9480f;--accent-text: #ffffff;--warning-bg: #fff3bf;--warning-border: #f0c000;--error: #c92a2a;--radius: 10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{overscroll-behavior:none}h1,h2{margin:0 0 8px}.button,.file-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.button.small{min-height:36px;padding:0 12px;font-size:14px}.button.primary,.file-button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.button:disabled{opacity:.5;cursor:default}.button.wide{width:100%}.file-button input{display:none}.upload{min-height:100%;display:grid;place-items:center;padding:16px}.upload-card{width:100%;max-width:440px;display:flex;flex-direction:column;gap:14px;padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:14px}.lead{margin:0;color:var(--muted)}.file-name{margin:0;font-size:14px;overflow-wrap:anywhere}.xrefs summary{cursor:pointer;font-weight:600}.xrefs p{color:var(--muted);font-size:14px}.error{margin:0;color:var(--error)}.error.floating{position:fixed;left:16px;right:16px;bottom:16px;padding:12px;background:var(--surface);border:1px solid var(--error);border-radius:var(--radius)}.workspace{height:100dvh;display:flex;flex-direction:column}.toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--border)}.file-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;font-size:14px}.banner.warning{background:var(--warning-bg);border-bottom:1px solid var(--warning-border)}.not-shown{margin:0;padding:4px 12px;font-size:12px;color:var(--muted);background:var(--surface);border-bottom:1px solid var(--border)}.stage{position:relative;flex:1;min-height:0}.canvas-container{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.canvas-overlay{touch-action:none;cursor:crosshair}.measure-panel{display:flex;flex-direction:column;gap:6px;padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border)}.result-main{display:flex;align-items:baseline;gap:12px}.result-value{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums}.result-label{color:var(--muted);font-size:14px;font-weight:600}.result-axes{display:flex;gap:24px;font-size:18px;font-variant-numeric:tabular-nums}.hint{margin:4px 0;font-size:16px}.point-list{margin:0;padding:0;list-style:none;font-size:14px}.point-list .free{color:var(--error)}.disclaimer{margin:0;padding:6px 8px;font-size:12px;color:var(--muted);background:var(--bg);border-radius:6px}.panel-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted)}.panel-buttons{display:flex;gap:8px}.side-panel{position:absolute;top:0;right:0;bottom:0;width:min(360px,100%);display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--border);box-shadow:-4px 0 16px #00000014}.side-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 4px}.layer-actions{display:flex;gap:8px;padding:4px 16px 8px}.layer-list{flex:1;overflow-y:auto;margin:0;padding:0 8px;list-style:none}.layer-row{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 8px;cursor:pointer}.layer-row input{width:20px;height:20px}.swatch{flex:none;width:14px;height:14px;border-radius:3px;border:1px solid var(--border)}.layer-name{flex:1;min-width:0;overflow-wrap:anywhere;font-size:14px}.layer-count{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.side-panel-note{margin:0;padding:8px 16px 16px;font-size:12px;color:var(--muted)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:16px;background:#0006}.dialog{width:100%;max-width:460px;max-height:100%;overflow-y:auto;padding:20px;background:var(--surface);border-radius:14px}.dialog p{margin:0 0 12px}.unit-list{margin:0 0 12px;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.unit-option{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font:inherit;text-align:left;cursor:pointer}.unit-option.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.unit-name{font-weight:600}.unit-hint{font-size:13px;color:var(--muted)}.field{display:flex;flex-direction:column;gap:6px;font-weight:600}.text-input{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font:inherit;font-weight:400;color:var(--text);background:var(--surface)}.code-input{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:18px;letter-spacing:.08em;text-transform:uppercase}.feedback-input{resize:vertical;margin-bottom:12px}.dialog-buttons{display:flex;justify-content:flex-end;gap:8px}.fine-print{margin:0;font-size:13px;color:var(--muted)}.account-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding-top:10px;border-top:1px solid var(--border);font-size:13px;color:var(--muted)}
