@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.body-loader{flex-direction:column;justify-content:center;align-items:center;min-height:300px;padding:2rem;display:flex}.body-loader.body-loader--overlay{z-index:5;pointer-events:auto;background-color:#ffffffa6;min-height:0;padding:1rem;position:absolute;inset:0}.body-loader--overlay .loader-text{max-width:18rem;font-weight:600}.body-loader.body-loader--inline{vertical-align:middle;flex-direction:row;gap:.5rem;min-height:0;padding:0;display:inline-flex}.body-loader.body-loader--inline .loader-spinner{border-width:2px;width:16px;height:16px}.body-loader.body-loader--inline .loader-text{font-size:inherit}.full-page-loader{z-index:998;background-color:#fff;flex-direction:column;width:100vw;height:100dvh;display:flex;position:fixed;top:0;left:0}.loader-content{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1.5rem;display:flex}.loader-spinner{border:4px solid #0000001a;border-top-color:#4caf50;border-radius:50%;width:50px;height:50px;animation:1s linear infinite spin}.full-page-loader .loader-spinner{border-width:5px;width:60px;height:60px}.loader-text{color:#333;text-align:center;margin:0;font-size:1rem}.full-page-loader .loader-text{font-size:1.2rem}.error-icon{color:#f44336;background:0 0;border:5px solid #f44336;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;font-size:1.5rem;font-weight:700;display:flex}.error-card{background:#fff;border:1px solid #eee;border-radius:12px;width:min(920px,90vw);padding:1rem;box-shadow:0 6px 20px #0000000f}.error-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.error-title{color:#d32f2f;font-weight:600}.error-actions{flex-wrap:wrap;gap:.5rem;display:flex}.error-btn{color:#fff;cursor:pointer;background:#2e7d32;border:none;border-radius:8px;padding:.5rem .75rem}.error-btn.secondary{color:#fff;background:#616161}.error-btn:hover{filter:brightness(.95)}.error-details{margin-top:.75rem}.error-details summary{cursor:pointer;color:#333;-webkit-user-select:none;user-select:none}.error-stack{color:#444;white-space:pre-wrap;background:#fafafa;border:1px solid #eee;border-radius:8px;max-height:40vh;margin:.75rem 0 0;padding:.75rem;overflow:auto}@media (width<=768px){.body-loader{min-height:200px;padding:1rem}.loader-spinner{border-width:3px;width:40px;height:40px}.full-page-loader .loader-spinner{border-width:4px;width:50px;height:50px}.loader-text{font-size:.9rem}.full-page-loader .loader-text{font-size:1rem}.error-card{width:94vw}}.spinner{vertical-align:middle;border:2px solid;border-top-color:#0000;border-radius:50%;width:14px;height:14px;margin-left:8px;animation:.8s linear infinite spin;display:inline-block}
