*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f5f0;color:#1a1a1a;font-size:14px}button{cursor:pointer;font-family:inherit;font-size:14px}.splash{display:flex;align-items:center;justify-content:center;height:100vh}.splash-spinner{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#5b5bd6;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#f5f5f0}.login-card{background:#fff;border-radius:16px;padding:36px;width:360px;box-shadow:0 2px 16px #00000014}.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}.login-icon{font-size:32px}.login-logo h1{font-size:20px;font-weight:600}.login-hint{font-size:13px;color:#666;margin-bottom:16px;line-height:1.5}.app-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:220px;min-width:220px;background:#fff;border-right:.5px solid #e5e5e5;display:flex;flex-direction:column;padding:16px 0}.sidebar-logo{display:flex;align-items:center;gap:10px;padding:0 16px 16px;border-bottom:.5px solid #eee;margin-bottom:8px;font-size:22px}.logo-title{font-size:14px;font-weight:600;line-height:1.2}.logo-sub{font-size:11px;color:#888}.nav-list{flex:1;padding:0 8px}.nav-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:none;background:none;border-radius:8px;text-align:left;color:#555;margin-bottom:2px;transition:background .15s}.nav-item:hover{background:#f0f0f0}.nav-item.active{background:#eef0ff;color:#4b51c4;font-weight:500}.logout-btn{margin:8px;padding:8px 10px;border:.5px solid #e0e0e0;border-radius:8px;background:none;color:#888;font-size:13px}.logout-btn:hover{background:#fee2e2;color:#b91c1c}.main-content{flex:1;overflow:hidden;display:flex;flex-direction:column}.loading{padding:40px;text-align:center;color:#888}.field-group{margin-bottom:14px}.field-label{font-size:12px;color:#666;margin-bottom:5px;display:block}.field-input{width:100%;padding:9px 12px;border:.5px solid #ddd;border-radius:8px;font-size:14px;background:#fff;color:#1a1a1a;transition:border-color .15s}.field-input:focus{outline:none;border-color:#5b5bd6;box-shadow:0 0 0 3px #5b5bd61f}.error-msg{font-size:13px;color:#dc2626;margin-bottom:8px}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn-primary{padding:9px 18px;background:#5b5bd6;color:#fff;border:none;border-radius:8px;font-weight:500;transition:background .15s}.btn-primary:hover{background:#4b51c4}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{padding:9px 16px;background:none;border:.5px solid #ddd;border-radius:8px;color:#555}.btn-secondary:hover{background:#f5f5f5}.btn-danger{padding:9px 16px;background:#fee2e2;color:#b91c1c;border:none;border-radius:8px}.btn-danger:hover{background:#fecaca}.btn-icon{background:none;border:.5px solid #e5e5e5;border-radius:7px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:14px}.btn-icon:hover{background:#f0f0f0}.btn-icon.danger:hover{background:#fee2e2}.btn-link{background:none;border:none;font-size:13px;padding:0;text-decoration:underline}.btn-link.danger{color:#dc2626}.btn-gcal{padding:6px 12px;background:#fff;border:.5px solid #4285F4;color:#4285f4;border-radius:7px;font-size:13px;font-weight:500}.btn-gcal:hover{background:#ebf1ff}.color-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.color-swatch{width:28px;height:28px;border-radius:50%;border:2.5px solid transparent;transition:transform .15s}.color-swatch:hover{transform:scale(1.1)}.color-swatch.selected{border-color:#1a1a1a;transform:scale(1.1)}.color-preview{padding:7px 12px;border-radius:8px;font-size:13px;font-weight:500}.color-dot-sm{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}.calendar-root{display:flex;height:100%;overflow:hidden}.cal-sidebar{width:180px;min-width:180px;background:#fff;border-right:.5px solid #e5e5e5;padding:16px 12px;overflow-y:auto}.member-list-title{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#999;margin-bottom:10px}.member-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;cursor:pointer;margin-bottom:2px;transition:background .15s}.member-row:hover{background:#f5f5f5}.member-row.hidden{opacity:.4}.member-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}.member-name{font-size:13px}.calendar-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.topbar{background:#fff;border-bottom:.5px solid #e5e5e5;padding:10px 16px;display:flex;align-items:center;gap:10px;flex-shrink:0}.topbar-left{display:flex;align-items:center;gap:8px;flex:1}.topbar-right{display:flex;align-items:center;gap:8px}.topbar-title{font-size:15px;font-weight:500;min-width:200px}.btn-nav{background:none;border:.5px solid #e0e0e0;border-radius:6px;width:28px;height:28px;font-size:16px;display:flex;align-items:center;justify-content:center}.btn-nav:hover{background:#f0f0f0}.btn-today{padding:5px 12px;border:.5px solid #e0e0e0;border-radius:6px;background:none;color:#555;font-size:13px}.btn-today:hover{background:#f0f0f0}.view-switcher{display:flex;background:#f0f0ec;border-radius:8px;padding:3px;gap:2px}.view-btn{padding:5px 12px;border:none;border-radius:6px;background:none;color:#666;font-size:13px;transition:all .12s}.view-btn.active{background:#fff;color:#1a1a1a;font-weight:500;box-shadow:0 1px 3px #0000001a}.btn-add{padding:7px 14px;background:#5b5bd6;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:500}.btn-add:hover{background:#4b51c4}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1;overflow-y:auto}.month-day-header{padding:7px 0;text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#999;background:#fff;border-bottom:.5px solid #e5e5e5;font-weight:500}.month-cell{border-right:.5px solid #e5e5e5;border-bottom:.5px solid #e5e5e5;padding:6px;min-height:100px;cursor:pointer;background:#fff;transition:background .1s}.month-cell:hover{background:#fafafa}.month-cell.other-month .day-num{color:#ccc}.month-cell.today .day-num{background:#5b5bd6;color:#fff;border-radius:50%}.day-num{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;color:#666;margin-bottom:3px}.event-chip{padding:2px 6px;border-radius:4px;font-size:11px;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.more-events{font-size:11px;color:#999;padding-left:4px}.week-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.week-header{display:grid;grid-template-columns:48px repeat(7,1fr);border-bottom:.5px solid #e5e5e5;background:#fff;flex-shrink:0}.week-gutter{border-right:.5px solid #e5e5e5}.week-day-header{text-align:center;padding:8px 4px;border-right:.5px solid #e5e5e5}.wdh-name{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#999}.wdh-num{font-size:16px;font-weight:500;color:#666;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:3px auto 0}.wdh-num.today{background:#5b5bd6;color:#fff}.week-body{flex:1;overflow-y:auto;display:grid;grid-template-columns:48px repeat(7,1fr)}.time-col{border-right:.5px solid #e5e5e5}.time-slot{height:48px;padding:3px 6px;font-size:11px;color:#bbb;display:flex;align-items:flex-start}.week-day-col{border-right:.5px solid #e5e5e5;position:relative}.week-day-col:last-child{border-right:none}.hour-cell{height:48px;border-bottom:.5px solid #f0f0f0}.week-event{position:absolute;left:2px;right:2px;border-radius:4px;padding:2px 5px;font-size:11px;font-weight:500;overflow:hidden;cursor:pointer;z-index:1}.day-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.day-header{padding:16px 20px;border-bottom:.5px solid #e5e5e5;background:#fff;flex-shrink:0}.day-title{font-size:20px;font-weight:500}.day-sub{font-size:13px;color:#888;margin-top:2px}.day-body{flex:1;overflow-y:auto;display:grid;grid-template-columns:48px 1fr}.day-events-col{position:relative}.day-event{position:absolute;left:8px;right:8px;border-radius:7px;padding:6px 10px;cursor:pointer;z-index:1}.ev-title{font-size:13px;font-weight:500}.ev-time{font-size:11px;opacity:.75;margin-top:2px}.admin-wrap{padding:24px;overflow-y:auto;height:100%}.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.admin-header h1{font-size:20px;font-weight:500}.member-cards{display:flex;flex-direction:column;gap:12px;max-width:640px}.card{background:#fff;border:.5px solid #e5e5e5;border-radius:12px;padding:16px}.member-card-top{display:flex;align-items:center;gap:12px}.member-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;flex-shrink:0}.member-info{flex:1}.member-card-name{font-size:15px;font-weight:500}.member-card-sub{font-size:12px;color:#888;margin-top:2px;display:flex;align-items:center}.member-card-actions{display:flex;gap:6px}.gcal-section{margin-top:12px;padding-top:12px;border-top:.5px solid #f0f0f0}.gcal-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.gcal-badge{font-size:12px;padding:3px 9px;border-radius:20px}.gcal-badge.connected{background:#d1fae5;color:#065f46}.gcal-badge.disconnected{background:#f3f4f6;color:#6b7280}.gcal-email{font-size:12px;color:#666;flex:1}.member-form{max-width:500px}.empty-state{text-align:center;padding:60px 20px;color:#888}.empty-state p{margin-bottom:16px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:#fff;border-radius:14px;padding:24px;width:440px;max-width:95vw;max-height:90vh;overflow-y:auto}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;font-size:16px;font-weight:500}.modal-close{background:none;border:none;font-size:18px;color:#888}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.member-chips{display:flex;flex-wrap:wrap;gap:8px}.member-chip{display:flex;align-items:center;gap:6px;padding:5px 10px;border:.5px solid #e0e0e0;border-radius:20px;cursor:pointer;font-size:13px;transition:all .12s;background:#fff}.member-chip:hover{background:#f5f5f5}.member-chip.selected{font-weight:500}.chip-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
