*{box-sizing:border-box}html,body,#root{margin:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#1a1a1a;color:#eee}.app{display:grid;grid-template-columns:320px 1fr;height:100vh;background:#1a1a1a;color:#eee}.sidebar{padding:16px;overflow-y:auto;border-right:1px solid #333;background:#222}.sidebar h2{margin:0 0 12px;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:#888}.sidebar h3{margin:16px 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#666}.sidebar-disclosure{margin-top:18px;border-top:1px solid #2a2a2a;padding-top:14px}.sidebar-disclosure>summary{cursor:pointer;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:#888;margin-bottom:10px;-webkit-user-select:none;user-select:none;list-style:none}.sidebar-disclosure>summary:before{content:"▸";display:inline-block;width:14px;color:#555;font-size:11px;transition:transform .15s ease}.sidebar-disclosure[open]>summary:before{transform:rotate(90deg)}.sidebar-disclosure>summary::-webkit-details-marker{display:none}.sidebar-disclosure>summary:hover{color:#ccc}.field{display:grid;grid-template-columns:1fr 80px;align-items:center;gap:8px;margin-bottom:6px;font-size:13px}.field label{color:#ccc}.field input,.field select{background:#111;color:#eee;border:1px solid #444;padding:4px 6px;border-radius:3px;font-size:13px;font-family:ui-monospace,SF Mono,monospace}.vis-row{display:flex;align-items:center;gap:8px;font-size:13px;color:#ccc;cursor:pointer;-webkit-user-select:none;user-select:none;padding:2px 0}.vis-row input{accent-color:#6aa3ff}.drawer-row{display:grid;grid-template-columns:64px 56px 80px;align-items:center;gap:6px;margin-bottom:3px;font-size:13px}.drawer-row label{color:#ccc}.drawer-row .drawer-fill{display:flex;align-items:center;gap:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.drawer-row .drawer-fill input{accent-color:#6aa3ff}.drawer-row .height-display{font-family:ui-monospace,SF Mono,monospace;color:#888;text-align:right;padding:4px 6px}.drawer-note{font-size:12px;color:#888;margin:6px 0}.drawer-warning{color:#c44}.viewer{position:relative;display:flex;flex-direction:column;min-width:0}.tabbar{display:flex;align-items:center;gap:4px;padding:8px 12px 0;background:#1a1a1a;border-bottom:1px solid #2a2a2a}.tab{background:transparent;color:#aaa;border:1px solid transparent;border-bottom:none;padding:6px 14px;border-radius:4px 4px 0 0;cursor:pointer;font-size:13px;font-family:inherit}.tab:hover{color:#eee}.tab.active{background:#2a2a2a;color:#eee;border-color:#3a3a3a}.status{margin-left:auto;background:#0009;padding:6px 10px;border-radius:3px;font-size:12px;font-family:ui-monospace,monospace;color:#ccc}.tab-content{flex:1;min-height:0;position:relative}.cutlist{padding:16px 20px;overflow-y:auto;height:100%;background:#1a1a1a;font-size:13px;color:#ddd}.cutlist-empty{padding:40px;color:#888}.cutlist-summary{color:#888;margin-bottom:8px;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.cutlist-area-summary{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px;font-size:12px}.cutlist-area-chip{background:#2a2a2a;border:1px solid #3a3a3a;border-radius:3px;padding:3px 8px;color:#ddd}.cutlist-area-chip .muted{color:#888}.cutlist-area-qty{color:#e9a85a;font-weight:600;font-family:ui-monospace,SF Mono,monospace}.cutlist-group{margin-bottom:24px}.cutlist-group-header{display:flex;align-items:baseline;gap:12px;padding:6px 10px;background:#2a2a2a;border-radius:3px 3px 0 0;font-size:13px}.cutlist-group-header .thickness{font-weight:600;color:#eee}.cutlist-group-header .material{color:#bbb}.cutlist-group-header .core-info{color:#888;font-size:12px}.cutlist-group-header .count{margin-left:auto;color:#888;font-size:12px}.materials-table td.role-thickness{color:#888;font-family:ui-monospace,monospace;font-size:12px}.cutlist-table{width:100%;border-collapse:collapse;font-family:ui-monospace,SF Mono,monospace;font-size:13px}.cutlist-table th{text-align:left;padding:6px 10px;border-bottom:1px solid #333;color:#888;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.cutlist-table td{padding:5px 10px;border-bottom:1px solid #232323}.cutlist-table .num{text-align:right}.cutlist-table tr:hover td{background:#232323}.materials-tab{padding:16px 20px;overflow-y:auto;height:100%;background:#1a1a1a;font-size:13px;color:#ddd}.materials-tab h2{margin:0 0 6px;font-size:14px;color:#eee;text-transform:uppercase;letter-spacing:.05em}.materials-section{margin-bottom:28px}.materials-section .hint{color:#888;font-size:12px;margin:0 0 10px}.materials-table{width:100%;border-collapse:collapse;font-size:13px}.materials-table th{text-align:left;padding:6px 10px;border-bottom:1px solid #333;color:#888;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.materials-table td{padding:4px 10px;border-bottom:1px solid #232323}.materials-table td.num{text-align:right}.materials-table td.role-name{color:#ccc;font-family:ui-monospace,monospace}.materials-table input[type=text],.materials-table input[type=number],.materials-table select{background:#111;color:#eee;border:1px solid #333;padding:3px 6px;border-radius:3px;font-size:13px;width:100%;box-sizing:border-box}.materials-table input[type=color]{background:transparent;border:1px solid #333;border-radius:3px;width:36px;height:24px;padding:0;cursor:pointer}.materials-table button{background:#2a2a2a;color:#ddd;border:1px solid #3a3a3a;padding:3px 10px;border-radius:3px;cursor:pointer;font-size:12px;font-family:inherit}.materials-table button:hover{background:#333}.materials-table button.btn-danger{color:#d96666}.materials-table button.btn-danger:hover{background:#3a1f1f}.materials-table button:disabled{opacity:.5;cursor:not-allowed}.materials-table tr.new-row td{background:#1d1d1d}.error-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:1000}.error-dialog{background:#232323;border:1px solid #4a3a3a;border-radius:6px;padding:18px 22px 16px;max-width:440px;box-shadow:0 8px 32px #0009;display:flex;flex-direction:column;gap:14px}.error-dialog-message{color:#eee;font-size:14px;line-height:1.45;white-space:pre-wrap}.error-dialog-ok{align-self:flex-end;background:#3a3a3a;color:#eee;border:1px solid #555;padding:6px 18px;border-radius:4px;cursor:pointer;font-family:inherit;font-size:13px;min-width:64px}.error-dialog-ok:hover{background:#4a4a4a}.error-dialog-ok:focus{outline:2px solid #6aa3ff;outline-offset:2px}.modal-inch-input,.wall-geom-input{width:100%;padding:3px 6px;font-size:12px;font-family:ui-monospace,SF Mono,monospace;background:#2a2a2e;color:#e8e6e1;border:1px solid #3a3a3a;border-radius:2px}.modal-inch-input:focus,.wall-geom-input:focus{outline:1px solid #5a8eff;outline-offset:-1px}
