.modal-overlay{z-index:1000;background-color:#00000080;justify-content:center;align-items:center;animation:.2s ease-out modal-fade-in;display:flex;position:fixed;inset:0}.modal-content{max-width:90%;max-height:90vh;animation:.2s ease-out modal-slide-up;position:relative;overflow-y:auto}.modal-dialog{align-items:center;gap:var(--space-4);padding:var(--space-6);background-color:var(--color-white);border-radius:var(--radius-lg);text-align:center;flex-direction:column;min-width:280px;max-width:320px;display:flex;box-shadow:0 10px 25px #0000001a}.modal-icon{border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.modal-icon-error{color:#ef4444;background-color:#fee2e2}.modal-icon-confirm{color:#f59e0b;background-color:#fef3c7}.modal-icon-alert{color:#22c55e;background-color:#dcfce7}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);margin:0}.modal-message{font-size:var(--font-size-sm);color:var(--color-gray-600);line-height:var(--line-height-relaxed);word-break:keep-all;white-space:pre-line;margin:0}.modal-actions{gap:var(--space-3);width:100%;margin-top:var(--space-2);display:flex}.modal-btn{padding:var(--space-3)var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);cursor:pointer;border:none;flex:1;transition:all .15s}.modal-btn:active{transform:scale(.98)}.modal-btn-cancel{background-color:var(--color-gray-100);color:var(--color-gray-700)}.modal-btn-cancel:hover{background-color:var(--color-gray-200)}.modal-btn-error{color:#fff;background-color:#ef4444}.modal-btn-error:hover{background-color:#dc2626}.modal-btn-confirm{background-color:var(--color-primary);color:#fff}.modal-btn-confirm:hover{opacity:.9}.modal-btn-alert{background-color:var(--color-primary);color:#fff}.modal-btn-alert:hover{opacity:.9}.member-agreement-modal{width:min(420px,92vw)}.member-agreement-dialog{width:100%;max-height:86vh;padding:var(--space-6)var(--space-5);background:var(--color-white);border-radius:var(--radius-lg);overflow-y:auto;box-shadow:0 10px 25px #0000001f}.member-agreement-title{color:var(--color-gray-900);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);margin:0}.member-agreement-description{margin-top:var(--space-2);color:var(--color-gray-600);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);word-break:keep-all}.member-agreement-list{gap:var(--space-3);margin-top:var(--space-5);flex-direction:column;display:flex}.member-agreement-item{padding:var(--space-3);border:1px solid var(--color-gray-200);border-radius:var(--radius-md)}.member-agreement-label{align-items:flex-start;gap:var(--space-3);display:flex}.member-agreement-checkbox{flex:none;width:16px;height:16px;margin-top:2px}.member-agreement-copy{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.member-agreement-name{color:var(--color-gray-900);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);line-height:var(--line-height-normal);word-break:keep-all}.member-agreement-hint{color:var(--color-gray-600);font-size:var(--font-size-xs);line-height:var(--line-height-normal)}.member-agreement-detail{margin-top:var(--space-3)}.member-agreement-detail summary{color:var(--color-primary);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.member-agreement-content{max-height:220px;margin-top:var(--space-3);padding:var(--space-3);color:var(--color-gray-900);background:var(--color-gray-50);border-radius:var(--radius-md);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);overflow-y:auto}.member-agreement-submit{width:100%;height:48px;margin-top:var(--space-5);border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-white);cursor:pointer;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);border:0}.member-agreement-submit:disabled{background:var(--color-gray-200);color:var(--color-gray-500);cursor:not-allowed}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
