:root{--color-primary: #3B82F6;--color-primary-light: #EFF6FF;--color-primary-dark: #2563EB;--color-gray-50: #F9FAFB;--color-gray-100: #F3F4F6;--color-gray-200: #E5E7EB;--color-gray-300: #D1D5DB;--color-gray-400: #9CA3AF;--color-gray-500: #6B7280;--color-gray-600: #4B5563;--color-gray-700: #374151;--color-gray-800: #1F2937;--color-gray-900: #111827;--color-red-100: #FEE2E2;--color-red-500: #EF4444;--color-blue-500: #3B82F6;--color-white: #FFFFFF;--color-black: #000000;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--radius-full: 9999px;--font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-family);font-size:16px;line-height:1.5;color:var(--color-gray-800);background-color:var(--color-gray-50);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25}h1{font-size:1.875rem}h2{font-size:1.5rem}h3{font-size:1.25rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:600;border-radius:var(--radius-lg);border:none;cursor:pointer;transition:all var(--transition-fast)}.btn-primary{background-color:var(--color-primary);color:var(--color-white)}.btn-primary:hover{background-color:var(--color-primary-dark)}.btn-secondary{background-color:var(--color-gray-100);color:var(--color-gray-700)}.btn-secondary:hover{background-color:var(--color-gray-200)}.btn-ghost{background-color:transparent;color:var(--color-gray-600)}.btn-ghost:hover{background-color:var(--color-gray-100)}.btn-lg{padding:.875rem 1.75rem;font-size:1rem}.input{width:100%;padding:.75rem 1rem;font-size:1rem;font-family:inherit;border:1px solid var(--color-gray-300);border-radius:var(--radius-lg);background-color:var(--color-white);transition:all var(--transition-fast)}.input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.input-code{font-size:1.75rem;font-weight:700;letter-spacing:.5rem;text-align:center;text-transform:uppercase}.header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background-color:var(--color-white);border-bottom:1px solid var(--color-gray-200)}.header-title{font-size:1.25rem;font-weight:800;color:var(--color-gray-900)}.sidebar{width:240px;background-color:var(--color-white);border-right:1px solid var(--color-gray-200);padding:1.25rem;display:flex;flex-direction:column;gap:1.25rem}.sidebar-section{display:flex;flex-direction:column;gap:.5rem}.sidebar-section-header{display:flex;align-items:center;justify-content:space-between}.sidebar-edit-btn{font-size:.75rem;color:var(--color-primary);background:none;border:none;cursor:pointer;padding:.25rem;font-weight:600}.sidebar-edit-btn:hover{text-decoration:underline}.sidebar-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-gray-400)}.member-item{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);border:1px solid transparent}.member-item:hover{background-color:var(--color-gray-50);border-color:var(--color-gray-200)}.member-item.active{background-color:var(--color-primary-light);border-color:var(--color-primary)}.member-color{width:12px;height:12px;border-radius:var(--radius-full);flex-shrink:0}.member-name{font-size:.9375rem;font-weight:500;color:var(--color-gray-700)}.member-filter-list{max-height:260px;overflow-y:auto;padding-right:4px}.member-filter-list::-webkit-scrollbar{width:4px}.member-filter-list::-webkit-scrollbar-track{background:transparent}.member-filter-list::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-full)}.member-filter-list::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.main-content{flex:1;display:flex;overflow:hidden}.content-wrapper{flex:1;display:flex;gap:.75rem;padding:.75rem;overflow:hidden;background-color:var(--color-gray-50)}.calendar-container{flex:3.2;min-width:0;overflow:auto;background-color:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:.75rem}.memo-container{flex:1;display:flex;flex-direction:column;background-color:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden}.memo-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-gray-200);background-color:var(--color-gray-50)}.memo-title{font-size:1rem;font-weight:700;color:var(--color-gray-800)}.memo-status{font-size:.75rem;color:var(--color-gray-400)}.memo-status.saving{color:var(--color-primary)}.memo-status.saved{color:#10b981}.memo-body{flex:1;padding:1rem;overflow:hidden}.memo-textarea{width:100%;height:100%;border:none;resize:none;font-family:var(--font-family);font-size:.9375rem;line-height:1.7;color:var(--color-gray-700);background-color:transparent}.memo-textarea:focus{outline:none}.memo-editor{width:100%;height:100%;min-height:150px;padding:.5rem 1rem;font-family:var(--font-family);font-size:.9375rem;line-height:1.6;color:var(--color-gray-700);background-color:transparent;outline:none;overflow-y:auto}.memo-editor ul,.memo-editor ol{padding-left:1.5rem;margin:.5rem 0}.memo-editor ul{list-style-type:disc!important}.memo-editor ol{list-style-type:decimal!important}.memo-editor li{margin-bottom:.25rem;display:list-item!important}.memo-editor:empty:before{content:attr(placeholder);color:var(--color-gray-400);cursor:text}.memo-toolbar{display:flex;align-items:center;gap:.25rem;padding:.5rem .75rem;background-color:var(--color-gray-50);border-bottom:1px solid var(--color-gray-200);flex-wrap:wrap}.toolbar-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;background:none;border-radius:var(--radius-sm);cursor:pointer;color:var(--color-gray-600);font-size:.875rem;transition:all var(--transition-fast)}.toolbar-btn:hover{background-color:var(--color-gray-200);color:var(--color-gray-900)}.toolbar-btn.active{background-color:var(--color-primary-light);color:var(--color-primary);border-color:var(--color-primary-light)}.toolbar-separator{width:1px;height:16px;background-color:var(--color-gray-300);margin:0 .25rem}.color-picker-wrapper{position:relative;display:flex;align-items:center}.color-input{width:24px;height:24px;padding:0;border:none;background:none;cursor:pointer;border-radius:50%;overflow:hidden}.color-input::-webkit-color-swatch-wrapper{padding:0}.color-input::-webkit-color-swatch{border:1px solid var(--color-gray-300);border-radius:50%}.memo-textarea::placeholder{color:var(--color-gray-400)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:1.5rem}.login-card{width:100%;max-width:420px;background-color:var(--color-white);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);overflow:hidden}.login-header{padding:2.5rem 2rem 1.5rem;text-align:center}.login-icon{font-size:3rem;margin-bottom:1rem}.login-title{font-size:1.5rem;font-weight:800;color:var(--color-gray-900);margin-bottom:.5rem}.login-subtitle{font-size:.9375rem;color:var(--color-gray-500)}.login-body{padding:1.5rem 2rem 2.5rem}.login-divider{display:flex;align-items:center;gap:1rem;margin:1.5rem 0;color:var(--color-gray-400);font-size:.8125rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background-color:var(--color-gray-200)}.login-error{padding:.75rem 1rem;border-radius:var(--radius-md);background-color:var(--color-red-100);color:var(--color-red-500);font-size:.875rem;margin-bottom:1rem}.modal-overlay{position:fixed;inset:0;background-color:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{width:100%;max-width:500px;max-height:90vh;background-color:var(--color-white);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-gray-200)}.modal-title{font-size:1.125rem;font-weight:700}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background-color:var(--color-gray-100);border-radius:var(--radius-full);cursor:pointer;font-size:1.25rem;color:var(--color-gray-500);transition:all var(--transition-fast)}.modal-close:hover{background-color:var(--color-gray-200);color:var(--color-gray-700)}.modal-body{flex:1;overflow-y:auto;padding:1.5rem}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1.25rem 1.5rem;border-top:1px solid var(--color-gray-200);background-color:var(--color-gray-50)}.form-group{margin-bottom:1.25rem}.form-label{display:block;font-size:.875rem;font-weight:600;color:var(--color-gray-700);margin-bottom:.5rem}.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.member-selector{display:flex;gap:.5rem;flex-wrap:wrap}.member-btn{flex:1;min-width:80px;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;border:2px solid var(--color-gray-200);border-radius:var(--radius-lg);background-color:var(--color-white);cursor:pointer;transition:all var(--transition-fast)}.member-btn:hover{border-color:var(--color-gray-300)}.member-btn.selected{border-color:var(--color-primary);background-color:var(--color-primary-light)}.member-btn-dot{width:10px;height:10px;border-radius:var(--radius-full)}.member-btn-name{font-size:.875rem;font-weight:500}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-primary)}.time-inputs{display:flex;align-items:center;gap:.5rem}.time-inputs select{padding:.5rem;border:1px solid var(--color-gray-300);border-radius:var(--radius-md);background-color:var(--color-white);font-family:inherit}.repeat-options{background-color:var(--color-gray-50);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);padding:1rem;margin-top:.5rem}.checklist{display:flex;flex-direction:column;gap:.5rem}.checklist-item{display:flex;align-items:center;gap:.5rem}.checklist-item input{flex:1;padding:.5rem;border:none;border-bottom:1px solid var(--color-gray-200);background:transparent;font-family:inherit}.checklist-item input:focus{outline:none;border-bottom-color:var(--color-primary)}.checklist-remove{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--color-gray-400);cursor:pointer}.checklist-remove:hover{color:var(--color-red-500)}.checklist-add{font-size:.8125rem;color:var(--color-primary);background:none;border:none;cursor:pointer;padding:.5rem 0;text-align:left}.checklist-add:hover{text-decoration:underline}.fc{font-family:var(--font-family)!important}.fc .fc-toolbar-title{font-size:1rem!important;font-weight:700!important;cursor:pointer;padding:.125rem .375rem;border-radius:var(--radius-md);transition:all var(--transition-fast)}.fc .fc-toolbar-title:hover{background-color:var(--color-gray-100);color:var(--color-primary)}.fc .fc-button{background-color:var(--color-white)!important;border-color:var(--color-gray-200)!important;color:var(--color-gray-700)!important;font-weight:500!important;padding:.25rem .625rem!important;font-size:.8125rem!important}.fc .fc-toolbar{margin-bottom:.5rem!important}.fc .fc-button:hover{background-color:var(--color-gray-50)!important;border-color:var(--color-gray-300)!important}.fc .fc-button-primary:not(:disabled).fc-button-active{background-color:var(--color-primary-light)!important;border-color:var(--color-primary)!important;color:var(--color-primary)!important}.fc .fc-day-today{background-color:var(--color-primary-light)!important}.fc .fc-daygrid-day-number{font-size:.8125rem;font-weight:600;padding:.25rem .5rem}.fc .fc-day-sat .fc-daygrid-day-number{color:var(--color-blue-500)}.fc .fc-day-sun .fc-daygrid-day-number{color:var(--color-red-500)}.fc .fc-event{border-radius:3px!important;font-size:.75rem!important;font-weight:600!important;line-height:1.3!important;border:none!important;cursor:pointer;box-shadow:0 1px 2px #0000000d}.fc .fc-event-title{font-weight:600!important}.fc-daygrid-block-event .fc-event-main{padding:1px 4px!important;color:#fff!important}.fc-daygrid-dot-event{background-color:transparent!important;padding:1px 2px!important;align-items:center!important}.fc-daygrid-dot-event .fc-event-title,.fc-daygrid-dot-event .fc-event-time{color:var(--color-gray-800)!important}.fc-daygrid-event-dot{border:none!important;width:8px!important;height:8px!important;border-radius:50%!important;margin-right:5px!important;display:inline-block!important}.fc .fc-daygrid-block-event .fc-event-title{text-align:center!important;color:#111827!important;padding:2px 6px!important;width:100%}.anniversary-event,.anniversary-event.fc-daygrid-event,.anniversary-event.fc-daygrid-block-event{background:transparent!important;background-color:transparent!important;border:none!important;box-shadow:none!important;opacity:1!important;pointer-events:none!important;margin:0!important;padding:0!important;min-height:0!important}.anniversary-event .fc-event-main,.anniversary-event .fc-event-title,.fc-day-other .anniversary-event .fc-event-title{color:#1e1b4b!important;opacity:1!important;font-weight:600!important;font-size:.75rem;padding-left:4px!important;text-align:left!important;text-decoration:none!important;filter:none!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important}.anniversary-event:hover{background:transparent!important}.holiday-event{background-color:#fee2e2!important}.holiday-event .fc-event-title{color:#ef4444!important}.holiday-event{background-color:#fee2e2!important;color:#b91c1c!important;font-weight:700!important;opacity:1!important}.anniversary-list{display:flex;flex-direction:column;gap:.375rem}.anniversary-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;background-color:var(--color-gray-50);border-radius:var(--radius-md);font-size:.8125rem}.anniversary-emoji{font-size:1rem}.anniversary-title{flex:1;font-weight:500;color:var(--color-gray-700);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.anniversary-date{font-size:.75rem;color:var(--color-gray-400);white-space:nowrap}.emoji-selector{display:flex;flex-wrap:wrap;gap:.5rem}.emoji-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;border:2px solid var(--color-gray-200);border-radius:var(--radius-lg);background-color:var(--color-white);cursor:pointer;transition:all var(--transition-fast)}.emoji-btn:hover{border-color:var(--color-gray-300);background-color:var(--color-gray-50)}.emoji-btn.selected{border-color:var(--color-primary);background-color:var(--color-primary-light)}.calendar-type-selector{display:flex;gap:.5rem}.calendar-type-btn{flex:1;padding:.75rem 1rem;font-size:.9375rem;font-weight:600;border:2px solid var(--color-gray-200);border-radius:var(--radius-lg);background-color:var(--color-white);cursor:pointer;transition:all var(--transition-fast)}.calendar-type-btn:hover{border-color:var(--color-gray-300)}.calendar-type-btn.selected[data-type=solar]{border-color:#f59e0b;background-color:#fef3c7;color:#92400e}.calendar-type-btn.selected[data-type=lunar]{border-color:#6366f1;background-color:#e0e7ff;color:#4338ca}.lunar-note{margin-top:.5rem;font-size:.8125rem;color:#6366f1;background-color:#e0e7ff;padding:.5rem .75rem;border-radius:var(--radius-md)}.family-code-box{display:flex;align-items:center;justify-content:space-between;padding:1rem;background-color:var(--color-gray-50);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg)}.family-code-value{font-size:1.5rem;font-weight:800;letter-spacing:.25rem;color:var(--color-gray-900)}.copy-btn{padding:.5rem .75rem;font-size:.75rem;background-color:var(--color-gray-800);color:var(--color-white);border:none;border-radius:var(--radius-md);cursor:pointer}.copy-btn:hover{background-color:var(--color-black)}.settings-section{margin-bottom:2rem}.settings-section-title{font-size:.875rem;font-weight:700;color:var(--color-gray-500);text-transform:uppercase;letter-spacing:.05em;margin-bottom:1rem}.settings-member-list{display:flex;flex-direction:column;gap:.75rem}.settings-member-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background-color:var(--color-gray-50);border-radius:var(--radius-lg)}.settings-member-color{width:24px;height:24px;border-radius:var(--radius-full);border:none;cursor:pointer}.settings-member-name{flex:1;padding:.5rem;border:1px solid var(--color-gray-200);border-radius:var(--radius-md);font-family:inherit}.settings-member-role{padding:.5rem;border:1px solid var(--color-gray-200);border-radius:var(--radius-md);background-color:var(--color-white);font-family:inherit}.settings-member-remove{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background-color:var(--color-red-100);color:var(--color-red-500);border-radius:var(--radius-md);cursor:pointer}.add-member-btn{width:100%;padding:.75rem;border:2px dashed var(--color-gray-300);border-radius:var(--radius-lg);background:none;color:var(--color-gray-500);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.add-member-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.hidden{display:none!important}.text-center{text-align:center}.mb-4{margin-bottom:1rem}.loading{display:flex;align-items:center;justify-content:center;min-height:100vh}.spinner{width:40px;height:40px;border:3px solid var(--color-gray-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:768px){.sidebar{display:none}.header{padding:1rem}.calendar-container{padding:.5rem}}.delete-options-menu,.edit-options-menu{position:absolute;bottom:0;left:0;right:0;background-color:var(--color-white);padding:1.5rem;border-top:1px solid var(--color-gray-200);display:flex;flex-direction:column;gap:.75rem;z-index:10;box-shadow:0 -4px 6px -1px #0000001a;border-radius:0 0 var(--radius-2xl) var(--radius-2xl);animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.delete-option-btn,.edit-option-btn{width:100%;padding:.875rem;border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);background-color:var(--color-white);color:var(--color-red-500);font-weight:600;font-size:.9375rem;cursor:pointer;transition:all var(--transition-fast)}.edit-option-btn{color:var(--color-primary)}.delete-option-btn:hover,.edit-option-btn:hover{background-color:var(--color-gray-50);border-color:var(--color-gray-300)}.delete-option-btn.cancel,.edit-option-btn.cancel{color:var(--color-gray-500);background-color:var(--color-gray-50)}.delete-option-btn.cancel:hover,.edit-option-btn.cancel:hover{background-color:var(--color-gray-100);border-color:var(--color-gray-300)}
