*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#333;background:#f5f6fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}.login-form[data-v-dab82599]{background:#fff;border-radius:12px;max-width:400px;margin:60px auto;padding:32px;box-shadow:0 2px 16px #00000014}.login-form h2[data-v-dab82599]{color:#1a1a1a;margin:0 0 24px;font-size:1.3rem}label[data-v-dab82599]{margin-bottom:16px;display:block}label span[data-v-dab82599]{color:#555;margin-bottom:4px;font-size:.85rem;font-weight:500;display:block}input[data-v-dab82599]{box-sizing:border-box;border:1px solid #ddd;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-size:.95rem;transition:border-color .2s}input[data-v-dab82599]:focus{border-color:#4a90d9}button[data-v-dab82599]{color:#fff;cursor:pointer;background:#4a90d9;border:none;border-radius:8px;width:100%;margin-top:8px;padding:11px;font-size:1rem;transition:background .2s}button[data-v-dab82599]:hover:not(:disabled){background:#357abd}button[data-v-dab82599]:disabled{opacity:.55;cursor:not-allowed}.calendar-panel[data-v-24689e52]{background:#fff;border-radius:12px;max-width:600px;margin:40px auto;overflow:hidden;box-shadow:0 2px 16px #00000014}.panel-header[data-v-24689e52]{border-bottom:1px solid #eee;justify-content:space-between;align-items:flex-start;padding:24px 24px 16px;display:flex}.panel-header h2[data-v-24689e52]{margin:0;font-size:1.2rem}.server-url[data-v-24689e52]{color:#999;font-size:.78rem}.btn-disconnect[data-v-24689e52]{color:#999;cursor:pointer;background:0 0;border:1px solid #ddd;border-radius:6px;padding:6px 14px;font-size:.82rem}.btn-disconnect[data-v-24689e52]:hover{color:#e74c3c;border-color:#e74c3c}.loading[data-v-24689e52],.empty[data-v-24689e52]{text-align:center;color:#888;padding:40px 24px}.calendar-list[data-v-24689e52]{padding:0}.calendar-item[data-v-24689e52]{border-bottom:1px solid #f5f5f5}.calendar-row[data-v-24689e52]{cursor:pointer;align-items:center;padding:14px 24px;transition:background .15s;display:flex}.calendar-row[data-v-24689e52]:hover{background:#f9f9f9}.calendar-color[data-v-24689e52]{border-radius:3px;flex-shrink:0;width:10px;height:30px;margin-right:14px}.calendar-info[data-v-24689e52]{flex:1;min-width:0}.calendar-name[data-v-24689e52]{text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.calendar-desc[data-v-24689e52]{color:#888;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:.8rem;display:block;overflow:hidden}.chevron[data-v-24689e52]{color:#ccc;flex-shrink:0;margin-left:10px;font-size:1.1rem}.calendar-actions[data-v-24689e52]{padding:10px 24px 14px 48px}.calendar-actions button[data-v-24689e52]{color:#fff;cursor:pointer;background:#4a90d9;border:none;border-radius:6px;padding:8px 20px;font-size:.88rem}.calendar-actions button[data-v-24689e52]:hover{background:#357abd}.calendar-view[data-v-3fb809ba]{background:#fff;border-radius:12px;max-width:960px;margin:20px auto;overflow:hidden;box-shadow:0 2px 16px #00000014}.view-header[data-v-3fb809ba]{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.view-header h2[data-v-3fb809ba]{margin:0;font-size:1.15rem}.btn-back[data-v-3fb809ba],.btn-sync[data-v-3fb809ba]{cursor:pointer;background:0 0;border:1px solid #ddd;border-radius:6px;padding:6px 14px;font-size:.82rem}.btn-back[data-v-3fb809ba]:hover{color:#4a90d9;border-color:#4a90d9}.btn-sync[data-v-3fb809ba]:hover{color:#2ecc71;border-color:#2ecc71}.btn-sync[data-v-3fb809ba]:disabled{opacity:.5;cursor:not-allowed}.month-nav[data-v-3fb809ba]{justify-content:center;align-items:center;gap:16px;padding:12px 20px;display:flex}.month-nav button[data-v-3fb809ba]{cursor:pointer;background:0 0;border:1px solid #ddd;border-radius:6px;padding:4px 10px;font-size:.85rem}.month-title[data-v-3fb809ba]{text-align:center;min-width:180px;font-size:1.05rem;font-weight:600}.btn-today[data-v-3fb809ba]{color:#4a90d9;border-color:#4a90d9!important;font-size:.8rem!important}.month-grid[data-v-3fb809ba]{border-top:1px solid #eee}.day-headers[data-v-3fb809ba]{border-bottom:1px solid #eee;grid-template-columns:repeat(7,1fr);display:grid}.day-header[data-v-3fb809ba]{text-align:center;color:#888;border-right:1px solid #f5f5f5;padding:8px 4px;font-size:.78rem;font-weight:600}.day-header[data-v-3fb809ba]:last-child{border-right:none}.week-row[data-v-3fb809ba]{border-bottom:1px solid #f5f5f5;grid-template-columns:repeat(7,1fr);min-height:90px;display:grid}.day-cell[data-v-3fb809ba]{border-right:1px solid #f5f5f5;padding:4px;overflow:hidden}.day-cell[data-v-3fb809ba]:last-child{border-right:none}.day-cell.other-month[data-v-3fb809ba]{background:#fafafa}.day-num[data-v-3fb809ba]{color:#555;margin-bottom:2px;padding:2px 6px;font-size:.82rem;font-weight:500;display:inline-block}.today .day-num[data-v-3fb809ba]{color:#fff;text-align:center;background:#4a90d9;border-radius:50%;width:24px;height:24px;padding:0;line-height:24px}.day-events[data-v-3fb809ba]{font-size:.72rem}.event-chip[data-v-3fb809ba]{color:#1a73e8;cursor:default;white-space:nowrap;text-overflow:ellipsis;background:#e8f0fe;border-radius:3px;align-items:baseline;gap:3px;margin-bottom:1px;padding:1px 4px;display:flex;overflow:hidden}.event-chip.all-day[data-v-3fb809ba]{color:#1e7e34;background:#e6f4ea}.event-chip.recurring[data-v-3fb809ba]{color:#7c3aed;background:#f3e8ff}.ev-time[data-v-3fb809ba]{opacity:.8;flex-shrink:0;font-size:.65rem}.ev-title[data-v-3fb809ba]{text-overflow:ellipsis;overflow:hidden}.event-more[data-v-3fb809ba]{color:#888;cursor:pointer;padding:1px 4px;font-size:.7rem}.app[data-v-e146aa52]{background:#f5f6fa;min-height:100vh}.app-header[data-v-e146aa52]{text-align:center;padding:24px 0 0}.app-header h1[data-v-e146aa52]{color:#333;margin:0;font-size:1.5rem}.error-banner[data-v-e146aa52]{color:#c0392b;background:#fff0f0;border:1px solid #fcc;border-radius:8px;justify-content:space-between;align-items:center;max-width:500px;margin:20px auto 0;padding:12px 16px;font-size:.88rem;display:flex}.error-banner button[data-v-e146aa52]{color:#c0392b;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:1.2rem}
