:root{font-family:Inter,system-ui,Avega,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}#root{width:100%;max-width:1400px;margin:0 auto;padding:2rem;box-sizing:border-box}@media(max-width:768px){#root{padding:1rem}}.App{text-align:left;max-width:1400px;margin:0 auto}.app-header{text-align:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #444}.app-header h1{font-size:2rem;margin:0 0 .25rem}.app-header p{color:#888;margin:0;font-size:.9rem}.app-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start}.left-panel,.right-panel{min-width:0}.action-bar{display:flex;gap:.75rem;margin:1rem 0;align-items:center}.action-bar button{padding:.6rem 1.2rem;font-size:.95rem;border-radius:6px;border:none;cursor:pointer;font-weight:600}.btn-calculate{background:#48f;color:#fff}.btn-calculate:hover:not(:disabled){background:#36d}.btn-calculate:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:#555;color:#ddd}.btn-secondary:hover{background:#666}.btn-clear{background:#933;color:#fff}.btn-clear:hover{background:#a44}.loading-indicator{text-align:center;padding:2rem;color:#aaa;font-size:1.1rem}.viewer-section{margin-top:1.5rem}.viewer-section h3{margin-bottom:.5rem}.viewer-close-btn{margin-bottom:.5rem;padding:.4rem .8rem;background:#555;color:#ddd;border:none;border-radius:4px;cursor:pointer}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.dialog-overlay>div{background:#2a2a2a;padding:1.5rem;border-radius:8px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto}form fieldset{border:1px solid #444;border-radius:8px;padding:1rem}form legend{font-weight:600;padding:0 .5rem}.form-field{display:flex;flex-direction:column;margin-bottom:.5rem}.form-field label{font-size:.85rem;margin-bottom:.2rem;color:#bbb}.form-field input{padding:.4rem .6rem;border-radius:4px;border:1px solid #555;background:#333;color:#eee;font-size:.9rem}.form-field output{padding:.4rem 0;font-weight:600;color:#8bf}form button[type=submit]{margin-top:.5rem;padding:.5rem 1rem;background:#48f;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:600}form button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.error-list{list-style:none;padding:0;margin:.5rem 0}.error-message{color:#f66;font-size:.85rem}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:.4rem .6rem;text-align:left;border-bottom:1px solid #444}th{color:#aaa;font-weight:600}.container-card{border:1px solid #444;border-radius:6px;margin-bottom:.75rem;overflow:hidden}.container-toggle{width:100%;text-align:left;padding:.6rem .8rem;background:#333;color:#ddd;border:none;cursor:pointer;font-size:.9rem}.container-toggle:hover{background:#3a3a3a}.stat-row{display:flex;align-items:center;gap:.5rem;margin:.4rem 0;font-size:.85rem}.stat-max{color:#888;font-size:.8rem}.progress-bar{flex:1;height:8px;background:#444;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:#48f;border-radius:4px;transition:width .3s}.no-results{text-align:center;padding:2rem;color:#888}.error-banner{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;margin:.75rem 0;background:#3d1f1f;border:1px solid #cc4444;border-radius:6px;color:#f88}.error-banner-content{flex:1}.error-banner-text{margin:0;font-size:.9rem}.error-banner-list{list-style:disc;padding-left:1.2rem;margin:0}.error-banner-list li{margin-bottom:.25rem}.error-banner-dismiss{background:none;border:none;color:#f88;cursor:pointer;font-size:1rem;padding:0;line-height:1}.error-banner-dismiss:hover{color:#faa}.error-boundary-fallback{text-align:center;padding:3rem 2rem;max-width:500px;margin:2rem auto;border:1px solid #cc4444;border-radius:8px;background:#3d1f1f}.error-boundary-fallback h2{color:#f88;margin:0 0 .75rem}.error-boundary-message{color:#ddd;margin:0 0 .5rem}.error-boundary-detail{color:#f88;font-size:.85rem;margin:0 0 1rem;font-family:monospace}.error-boundary-reset{padding:.5rem 1.2rem;background:#48f;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:600}.error-boundary-reset:hover{background:#36d}.viewer-section canvas{width:100%!important;height:auto!important;aspect-ratio:4 / 3;min-height:300px}@media(max-width:768px){.app-layout{grid-template-columns:1fr;gap:1.5rem}.app-header h1{font-size:1.5rem}.action-bar{flex-wrap:wrap}.action-bar button{flex:1 1 auto;min-width:120px}table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.form-field input{width:100%;box-sizing:border-box}.dialog-overlay>div{width:95%;max-height:90vh;padding:1rem}.error-boundary-fallback{margin:1rem;padding:2rem 1rem}}@media(max-width:480px){.app-header h1{font-size:1.25rem}.action-bar{gap:.5rem}.action-bar button{padding:.5rem .8rem;font-size:.85rem;min-width:0;flex:1 1 100%}form fieldset{padding:.75rem}th,td{padding:.3rem .4rem;font-size:.8rem}.container-toggle{font-size:.85rem;padding:.5rem .6rem}.viewer-section canvas{min-height:250px}}
