* { box-sizing: border-box; } html, body, #root { height: 100%; margin: 0; } body { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; font-size: 14px; color: #1c2330; background: #f5f6f8; } .app { display: flex; flex-direction: column; height: 100%; } header { padding: 10px 18px 8px; border-bottom: 1px solid #dde1e7; background: #fff; } header h1 { margin: 0 0 2px; font-size: 19px; } header p { margin: 0; color: #5a6472; } a { color: #1667c2; } .columns { display: flex; flex: 1; min-height: 0; } aside { width: 340px; flex: none; overflow-y: auto; padding: 8px 16px 24px; background: #fff; border-right: 1px solid #dde1e7; } main { flex: 1; min-width: 0; position: relative; } section { margin-top: 14px; } section + section { padding-top: 12px; border-top: 1px solid #e7eaee; } section h2 { font-size: 13px; text-transform: uppercase; letter-spacing: 0.04em; color: #5a6472; margin: 0 0 8px; } .row { display: flex; flex-wrap: wrap; gap: 6px; } button, .button { font: inherit; padding: 5px 12px; border: 1px solid #b9c0ca; border-radius: 6px; background: #f2f4f7; cursor: pointer; display: inline-block; } button:hover:not(:disabled), .button:hover { background: #e6eaef; } button:disabled { opacity: 0.5; cursor: default; } button.solve { width: 100%; padding: 8px; font-weight: 600; background: #1667c2; border-color: #1257a6; color: #fff; } button.solve:hover:not(:disabled) { background: #1257a6; } button.linkish { border: none; background: none; padding: 0; margin-top: 6px; color: #1667c2; text-decoration: underline; } .hint { color: #78818d; font-size: 12.5px; margin: 6px 0; } .status { color: #4a5462; font-size: 13px; margin: 8px 0 0; } .error { color: #b3261e; font-size: 13px; margin: 8px 0 0; white-space: pre-wrap; } .warn { color: #8a6d00; font-size: 12.5px; margin-top: 3px; } .meshinfo { margin-top: 10px; padding: 8px 10px; border: 1px solid #dde1e7; border-radius: 6px; background: #f8f9fb; font-size: 13px; min-height: 74px; } .meshinfo .status, .meshinfo .error { margin: 0; } .placeholder { color: #9aa3af; } .field { display: block; margin: 10px 0; } .field > span { display: block; font-size: 12.5px; color: #4a5462; margin-bottom: 4px; } .field select, .field input[type='text'] { font: inherit; width: 100%; padding: 5px 8px; border: 1px solid #b9c0ca; border-radius: 6px; background: #fff; } .field select:disabled, .field input:disabled { background: #f2f4f7; border-color: #d3d8df; color: #9aa3af; } .field.inactive > span { color: #9aa3af; } .pde-note { min-height: 4.4em; } .solve-status { min-height: 42px; } .field input[type='range'] { width: 100%; } .preset-row { display: flex; gap: 6px; } .preset-row select { width: 110px; flex: none; color: #5a6472; } .preset-row input { flex: 1; font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace; font-size: 13px; } details summary { cursor: pointer; font-size: 13px; color: #5a6472; } .console { max-height: 200px; overflow-y: auto; background: #14181f; color: #c7d0dc; font-size: 11.5px; padding: 8px; border-radius: 6px; white-space: pre-wrap; word-break: break-word; } .view-placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #9aa3af; font-size: 15px; } .view-toolbar { position: absolute; top: 12px; left: 12px; z-index: 1; display: flex; gap: 0; border: 1px solid #b9c0ca; border-radius: 6px; overflow: hidden; background: rgba(255, 255, 255, 0.9); } .view-toolbar button { border: none; border-radius: 0; background: transparent; padding: 4px 10px; font-size: 12px; color: #5a6472; } .view-toolbar button + button { border-left: 1px solid #dde1e7; } /* separates the anaglyph toggle from the mutually-exclusive mode group */ .view-toolbar button.sep { border-left: 3px double #dde1e7; } .view-toolbar button:hover { background: #eef1f5; } .view-toolbar button.active { background: rgba(22, 103, 194, 0.12); color: #1257a6; }