*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#fff;color:#333;line-height:1.4}#app{max-width:860px;margin:0 auto;padding:16px}.diagram-wrapper{position:relative;max-width:860px;margin:0 auto}.section-label{font-size:12px;font-weight:700;color:#999;letter-spacing:1px;margin-bottom:10px}.group-row{display:grid;gap:12px;margin-bottom:32px}.type-box{border-width:2px;border-style:solid;border-color:var(--type-border, #9E9E9E);background:var(--type-bg, #F5F5F5);border-radius:6px;padding:12px 14px;text-align:center;min-width:0}.type-box__header{font-weight:700;font-size:13px;color:var(--type-border, #9E9E9E);margin-bottom:6px}.type-box__content{font-size:11px;line-height:1.6;word-wrap:break-word;overflow-wrap:break-word;color:#333}.center-node{display:inline-block;padding:12px 28px;background:#f5f5f5;border:2.5px solid #424242;border-radius:8px;font-size:15px;font-weight:700;color:#212121}.center-node-wrapper{text-align:center;margin:48px 0}.connector-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.hazard-link{color:#1565c0;text-decoration:underline;cursor:pointer}.hazard-link:hover{color:#0d47a1}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;gap:16px;color:#666}.spinner{width:36px;height:36px;border:3px solid #e0e0e0;border-top-color:#1565c0;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-state{max-width:500px;margin:40px auto;padding:24px;border:1px solid #FFCDD2;border-radius:8px;background:#fff8f8;text-align:center}.error-state h2{font-size:18px;color:#c62828;margin-bottom:12px}.error-state p{font-size:14px;color:#555;line-height:1.6}.error-state a{color:#1565c0;text-decoration:underline}.error-state code{background:#f5f5f5;padding:2px 6px;border-radius:3px;font-size:13px}@media print{body{background:#fff}#app{padding:0}.connector-overlay line,.connector-overlay path{stroke:#666!important}}
